0

我试图通过一个名为“wpcf-range”的特定变量来排序一个列表,它是数字的,它需要列出 ASC。这是针对 WordPress 网站的,但之前的开发人员使用的是 MySQL 语句,而不是使用 WordPress 的方式,因此让我的初学者大脑感到困惑。请参阅下面的代码,任何帮助将不胜感激...

$listing = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM wp_posts INNER JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID WHERE wp_term_relationships.term_taxonomy_id = '" . $term->term_taxonomy_id . "' LIMIT " . $start . ", " . $limit);
4

2 回答 2

0

如果wpcf-range是表中的一列,那么您可以在 sql 查询文本中wp_posts添加一个子句,在子句之前,例如ORDER BYLIMIT

... $term->term_taxonomy_id . "' ORDER BY `wpcf-range` LIMIT " . $start . ...
                                 ^^^^^^^^^^^^^^^^^^^^^^

(注意:列名中包含破折号有点奇怪,这使我怀疑这可能不是表中的列wp_posts。如果确实包含破折号,则需要附上对该列的引用name in backticks. 它需要包含在反引号中,否则,MySQL 会将破折号视为减法运算符。

如果的数据类型wpcf-range是字符类型而不是数字类型,那么您可以通过向其添加零来将其转换为数字...

ORDER BY `wpcf-range`+0

如果这不是表中列的名称(并且我们无法从您的问题中提供的信息中分辨出来......如果它是一个列名还是一个表达式......我们不能判断 wp_posts 是否包含两个名为wpcfand的数字列,range这样您的意思是从另一个中减去一个,并按结果值对结果集进行排序,例如

ORDER BY `wpcf` - `range`

如果这不是唯一的,您可能还希望在 ORDER BY 中包含其他列,以便结果集的顺序是确定的,例如

ORDER BY `wpcf` - `range`, post_id
于 2013-02-14T16:17:16.197 回答
0
$listing = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM wp_posts INNER JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID WHERE wp_term_relationships.term_taxonomy_id = '" . $term->term_taxonomy_id . "' ORDER BY wpcf-range ASC LIMIT " . $start . ", " . $limit);
于 2013-02-14T16:17:50.070 回答