在自定义查询中,我发现我们可以将帖子标题转换为十进制,然后按顺序排序。
示例:
$querystr = "SELECT $wpdb->posts.* ,$wpdb->terms.slug
FROM $wpdb->posts,$wpdb->terms
WHERE $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_type = 'post'
AND $wpdb->terms.slug = 'open-houses'
ORDER BY convert(`post_title`, decimal) ASC ";
$pageposts = $wpdb->get_results($querystr, OBJECT);
这在订购帖子标题时效果很好但实际上在从特定类别获取帖子时没有返回正确的结果(意味着查询在某处错误)。
我想按照单词按查询标准,但与ORDER BY convert('post_title', decimal) ASC ";
,
类似
$args = array( 'posts_per_page' => -1 , 'order_by'=>'convert(`post_title`, decimal)', 'order' => 'ASC' , 'category_name' => 'cat-slug-here');
$pageposts = get_posts( $args ) ;
有可能吗?或者其他任何方式?
我的数据包含post_title
78 West 85th Street#3A
786 West 85th Street#5A
252 West 85th Street#4A
(等等)
查询后,数据列表应按顺序排列
答案 0 :(得分:0)
要将初始字符串转换为数字,请尝试以下方法:
$querystr = "SELECT $wpdb->posts.* ,$wpdb->terms.slug
FROM $wpdb->posts,$wpdb->terms
WHERE $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_type = 'post'
AND $wpdb->terms.slug = 'open-houses'
ORDER BY CAST(`post_title` AS UNSIGNED) ASC";
答案 1 :(得分:0)
你可以从post_title中提取小数。例如:
ORDER BY SUBSTRING_INDEX(`post_title`, ' ', 1) ASC