Display发布从wp_list_categoies链接的匹配分类术语?

时间:2014-07-24 作者:Steve

这应该很简单,但我想不通。

我有一个自定义的帖子类型和一个自定义的分类法。分类法命名为“asset\\u type”,slug为“type”

我正在使用wp_list_categories 提供一个侧栏菜单,用户可以在其中单击以查看已单击分类法中的帖子。

例如:

<div class="category-sidebar"><?php
            $args = array(\'post_type\' => \'design_asset\', \'show_count\' => 1, \'taxonomy\' => \'asset_type\');
            wp_list_categories($args);
            ?>
</div>
这将正确显示我的税务术语,例如,“元素”,链接为http://site.dev/type/element/

它会转到页面,但我不知道如何修改我的循环,因此它只显示与当前术语匹配的帖子,在本例中为“element”,也不会将页面标题显示为“element”。

显示所有帖子的循环是:

$args = array( \'post_type\' => \'design_asset\', \'posts_per_page\' => 100, \'orderby\' => \'title\', \'order\' => \'ASC\'  );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();

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

史蒂夫,你问了几个问题,我看了一下,我得出结论,你的循环导致了你所有的头痛。

显示所有帖子的循环是:

$args = array( \'post_type\' => \'design_asset\', \'posts_per_page\' => 100, \'orderby\' => \'title\', \'order\' => \'ASC\'  );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
任何存档页上的自定义循环都会产生问题。这些页面上的主查询非常具体,这些查询是在自定义查询中复制的shlep。要了解主查询是如何工作的,以及主查询如何决定在何处显示内容,请转到并检查my answer on this question

我建议您不要在任何存档页面甚至主页上对主循环使用任何自定义查询。

我的建议是将所有模板中的所有循环更改回默认循环

if ( have_posts() ) :
    while ( have_posts() ) : the_post();

       <----LOOP ELEMENTS---->

     endwhile;
 endif;
在您更改回默认循环后,您将看到所有内容都将正常工作,但您的自定义帖子类型将不包括在主循环中。

要更正此问题,请使用pre_get_posts 将自定义帖子类型和其他修改添加到主查询

function include_cpt( $query ) {
    if ( !is_admin() && $query->is_main_query() ) {
        $query->set( \'post_type\', \'design_asset\' );
        $query->set( \'posts_per_page\', \'100\' );
        $query->set( \'orderby\', \'title\' );
        $query->set( \'order\', \'ASC\' ); 
    }
}
add_action( \'pre_get_posts\', \'include_cpt\' );
这应该使一切正常工作,并如预期的那样

SO网友:Johannes Pille

它会转到页面,但我不知道如何修改我的循环,因此它只显示与当前术语匹配的帖子,在本例中为“element”,也不会将页面标题显示为“element”。

循环的以下参数应执行以下操作:

$args = array(
    \'post_type\' => \'design_asset\',
    \'posts_per_page\' => 100,
    \'orderby\' => \'title\',
    \'order\' => \'ASC\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'asset_type\',
            \'field\' => \'slug\',
            \'terms\' => end( ( explode( \'/\', rtrim( $_SERVER[\'REQUEST_URI\'], \'/\' ) ) ) )
        )
    )
);
参考文献:

SO网友:BigToe

您被一个常见的小精灵咬了一口:wp\\u list\\u categories不将post\\u类型作为参数。wp\\u list\\u categories始终为默认的post\\u类型“post”生成指向类别的链接如果要使用由自定义帖子类型分隔的类别,则需要指定相关的永久链接。这里有一种方法adding a permalink structure for custom post type archive.

以上答案很有帮助,因为您希望您的类别档案包括所有帖子类型。

结束

相关推荐

Taxonomy term count

我有一个名为“资源”的自定义帖子类型,用于在我的网站上创建资源目录。该CPT具有称为“价格”的分类法。有三个术语因此,当有人在查看我的目录时,他们会在侧栏中看到“价格”以及下面的选项,他们可以单击(例如)免费并查看列出的18种不同的免费资源。我想要的是学期页面我的网站。com/价格/免费要有标题18免费资源我怎样才能做到这一点?