有没有办法将帖子和定制帖子类型作为一个组进行排序?

时间:2014-06-28 作者:Edmund Heaphy

我尝试了几个插件,它们似乎都是这样做的(比如this one), 但它们要么没有,要么在实现上非常差,并导致问题(链接的似乎是随机选择的)。

我的索引中有一个WP\\u查询。php如下:

<?php
if ( get_query_var(\'paged\') ) $paged = get_query_var(\'paged\');  
if ( get_query_var(\'page\') ) $paged = get_query_var(\'page\');

$query = new WP_Query( array( \'post_type\' => array(\'post\',\'secondposttype\'), \'paged\' => $page ) );

if ( $query->have_posts() ) : ?>
因此,我的主页显示普通帖子和自定义帖子类型“secondposttype”中的帖子。

我还使用条件计数脚本,因此我可以自定义显示的内容,等等:

<?php if ($count == 1) : ?>
我们目前使用的解决方案是Q2W3 Post-Order插件,如果只有一种Post-type,它的效果会很好。我已尝试自动向新帖子/自定义帖子类型帖子添加自定义分类法值,并在索引中查询该自定义分类法。php,然后使用Q2W3 Post Order在该分类法中对帖子进行排序,但这根本不起作用(另外,这感觉比它应该的要复杂得多)。

我的问题是:有没有办法将帖子和自定义帖子类型作为一个大列表进行排序?这样,当我像上面那样查询它们时,我可以排序它们的显示方式?我很难相信想要这样做是罕见的。

EDIT: 我要举一个我想做的例子。我想通过一个WP\\U查询在主页上显示帖子和第二种帖子类型的帖子。我希望能够控制它,这样订单就可以这样进行:

“Post”Post type中的第1篇文章“secondposttype”Post type中的第1篇文章“secondposttype”Post type中的第2篇文章“secondposttype”Post type中的第2篇文章“Post”Post type中的第3篇文章“secondposttype”Post type中的第3篇文章

“secondposttype”职位类型的第3个职位

  • 从“Post”职位类型的第1个职位
  • 从“Post”职位类型的第2个职位
  • 从“secondposttype”职位类型的第1个职位
  • 从“secondposttype”职位类型的第2个职位“帖子类型
  • 有一些插件可以排序一种帖子类型,这样你就可以决定哪篇帖子出现在第一、第二、第三、第四等位置。我只想能够对帖子和其他一些帖子类型进行分组,这样它们不仅可以出现在一个流中(这可以通过WP\\U查询实现)但它们可以按任何顺序排序,并且出于排序目的,帖子和第二种帖子类型的帖子被视为一个相同的帖子。

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

    就查询而言,这样做非常简单,但您必须提供自己的界面来创建帖子的顺序,最终应该按照您希望的顺序将帖子ID保存到数组中:

    $post_ids = array( 42, 13, 23, 99 );
    
    然后,只需获取这些ID的“页面”:

    // current page number
    $paged = 1;
    // number of posts per page
    $posts_per_page = 2;
    // starting position
    $offset = ( $paged - 1 ) * $posts_per_page;
    // extract page of IDs
    $ids_to_query = array_slice( $post_ids, $offset, $posts_per_page );
    
    然后通过将这些ID传递给查询post__in, 和orderby 这个post__in 阵列:

    $args = array(
        \'post_type\' => array( \'post\',\'secondposttype\' ),
        \'post__in\' => $ids_to_query
        \'orderby\' => \'post__in\',
        \'ignore_sticky_posts\' => 1,
        \'posts_per_page\' => $posts_per_page
    );
    $ordered_posts = new WP_Query( $args );
    

    结束