组合类别(使用多个分类术语查询帖子)

时间:2016-07-29 作者:Jay

我试图显示多个类别的所有帖子的列表(如果有人回答这个问题,你可能还想包括组合标签,这可能会使这个答案对未来的搜索者来说更加全面)。

以下是我的工作内容:

此函数用于显示列表:

function my_custom_loop_three_posts($category, $tag, $offset) {
        $args=array(
          // showposts has been replaced, use \'posts_per_page\' instead
          // \'showposts\'        => 1,
          \'posts_per_page\'      => 3,
          // this has been replaced, use \'ignore_sticky_posts\'
          // \'caller_get_posts\' => 1,
          \'ignore_sticky_posts\' => true,
        );

        if ($category) {
          $args[\'cat\'] = $category;
        }

        if ($tag) {
          $args[\'tag\'] = $tag;
        }

        if ($offset) {
          $args[\'offset\'] = $offset;
        }

        $my_query = new WP_Query($args);
        // ... rest of function to output loop 

if( $my_query->have_posts() ) {
            while ($my_query->have_posts()) : $my_query->the_post(); ?>
             <div class="">
              <a href="<?php the_permalink() ?>" >
   <div class="menu-item-list-item menu-item-list-item-not-title">
      <?php the_title(); ?>
   </div>
              </a>
             </div>
            <?php
            endwhile;
        } //if ($my_query)

        wp_reset_query();  // Restore global post data stomped by the_post().   
 };


function myFilter($query) {
    if ($query->is_feed) {
        $query->set(\'cat\',\'-121\');
    }
return $query;
}
add_filter(\'pre_get_posts\',\'myFilter\');
我只是用这个在页面上显示列表:

<?php my_custom_loop_three_posts(330, NULL, 1); ?>
因为这个函数工作得很好,所以我希望能够修改它以在结果中显示多个类别/标签,但对此我有点困惑。也许很容易,也许很难?解决方案或指导我如何修复此欢迎。谢谢

1 个回复
SO网友:brianjohnhanna

此类行为记录在WP_Query 文档您可以使用逗号分隔的类别ID列表,而不仅仅是一个。例如(直接从法典页上撕下):

$query = new WP_Query( array( \'cat\' => \'2,6,17,38\' ) );
标签有点不同,但也不太一样:

$query = new WP_Query( array( \'tag__in\' => array( 37, 47 ) ) );
你也许可以像猫一样使用逗号分隔的ID,但如果不进行测试,我就无法确定,而且文档在这一点上有点不清楚。但基本上,如果有必要,只需进行一些调整,就可以使用相同的函数并像这样调用它:

<?php my_custom_loop_three_posts(\'33,44,55\', array(12,13,14), 1); ?>
如果使用该示例,请确保更改

if ($tag) {
    $args[\'tag\'] = $tag;
}
收件人:

if ($tag) {
    $args[\'tag__in\'] = $tag;
}
希望这是有意义的。医生应该会帮你完成剩下的工作。

相关推荐

WP_DROPDOWN_CATEGORIES和自定义分类+自定义帖子类型

我已经创建了名为“的自定义帖子类型”;案例研究;(使用slug案例研究),支持自定义分类法,称为;主题;。我正在努力实现什么?简单的下拉列表,在选项选择上重定向到特定的分类术语页面。代码:<form id="category-select" class="category-select" action="<?php bloginfo(\'url\'); ?>" method="get&quo