将标题转换为十进制后,Wordpress发布post_title的顺序?

时间:2017-06-13 08:04:01

标签: php mysql wordpress

在自定义查询中,我发现我们可以将帖子标题转换为十进制,然后按顺序排序。

示例:

    $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

  • (等等)

查询后,数据列表应按顺序排列

  • 78 West 85th Street#3A
  • 252 West 85th Street#4A
  • 786 West 85th Street#5A

2 个答案:

答案 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