WP_QUERERY ORDERBY分类术语值(数字)

时间:2013-02-20 作者:Joshc

我有这个问题。。。

<?php 

    $press = new WP_Query(array(
        \'posts_per_page\' => -1,
        \'post_type\'     => \'individual\',
        \'post_status\'   => \'private\' 
    ));

    if ($press->have_posts()) : while ($press->have_posts()) : $press->the_post();

?>
但我的自定义帖子类型使用带有数字术语值的自定义分类法。

我的问题是,按术语值对该查询排序时是否存在问题?

分类法称为“个体组”

任何帮助都将不胜感激,谢谢。

乔希

3 个回复
最合适的回答,由SO网友:Evan 整理而成

不,使用默认WP Core无法做到这一点@希森·耶稣谈论的是元数据,而不是分类法。看见http://scribu.net/wordpress/sortable-taxonomy-columns.html 寻找合适的解决方案。

更透彻地解释了为什么这不是核心的东西:Using wp_query is it possible to orderby taxonomy?

SO网友:cenk

这是一个复杂的查询,我使用它按分类法段塞对POST查询进行数字排序和过滤。

$my_post_type = \'some_post_type\';
$my_term_slug_to_be_used_for_Ordering = \'some_slug\';
$my_term_slug_to_be_used_for_Filtering = \'some_other_slug\';

$querystr = "
  SELECT 
   $wpdb->posts.*, $wpdb->term_relationships.object_id, 
   (SELECT wpt.slug
        FROM $wpdb->term_taxonomy wptt 
        INNER JOIN $wpdb->term_relationships wptr ON wptt.term_taxonomy_id = wptr.term_taxonomy_id
        INNER JOIN $wpdb->terms wpt ON wpt.term_id = wptt.term_id
        WHERE 
        wptr.object_id = $wpdb->term_relationships.object_id AND 
        wptt.taxonomy = \'my_term_slug_to_be_used_for_Ordering\') AS numeric_column_value

    FROM $wpdb->term_taxonomy INNER JOIN $wpdb->term_relationships ON $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
         INNER JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->term_relationships.object_id
         INNER JOIN $wpdb->terms ON $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id
    WHERE 
         $wpdb->terms.slug = \'{$my_term_slug_to_be_used_for_Filtering}\' AND
         $wpdb->posts.post_type = \'$my_post_type\' AND $wpdb->posts.post_status = \'publish\'

    ORDER BY numeric_column_value * 1 DESC"; // Actually it is a string so, * 1 for numeric

$r = $wpdb->get_results($querystr, OBJECT);

SO网友:heathenJesus

当然,在orderby 参数,则有一个名为meta_value_num 这应该正是你想要的。

http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

<人力资源>
$press = new WP_Query(array(
    \'posts_per_page\' => -1,
    \'post_type\'      => \'individual\',
    \'post_status\'    => \'private\',
    \'orderby\'        => \'meta_value_num\',
    \'meta_key\'       => \'individual-group\'
));

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post