从最近发布的帖子列表中排除父类别

时间:2019-05-26 作者:BlueHelmet

我只想显示帖子特定父类别中的子类别,并排除所有其他类别。

这是我的front-page.php. 每个最近发布的帖子当前都使用get_the_category_list($post->ID).

我试过了get_the_category_list($parent, \'8\') 但它没有排除任何东西。8是我要保留的父类别的整数。非常感谢您的帮助!

这是我的代码:

<?php $the_query = new WP_Query(array(
    \'post_type\'      => \'post\',
    \'category_name\'  => \'genres\',
    \'posts_per_page\' => 6,
    \'post_status\'    => \'publish\'
    ));

    while ( $the_query->have_posts() ) : $the_query->the_post();

        echo \'<div class="wrapper">
            <div> // stuff with post title, image and excerpt </div> 
            <div>\' . get_the_category_list( $post->ID ) . \'</div>\';

    endwhile;
    wp_reset_postdata(); ?>

I want to go from this:

父类别1、子类别1、父类别2、子类别2、父类别3、子类别3

To this:

子类别1

1 个回复
SO网友:BlueHelmet

我找到了一个有效的函数found here.

首先,我将以下代码添加到functions.php, 不包括我不想要的父类别:

function custom_get_the_category_list() {
    $categories = get_the_category();
    $exclude1 = get_cat_ID( \'Parent1\' );
    $exclude2 = get_cat_ID( \'Parent2\' );
    $categories_list = \'\';

    foreach ( $categories as $category ) {
        if ( $category->category_parent == $exclude1
                || $category->cat_ID == $exclude1 || $category->category_parent == $exclude2
                || $category->cat_ID == $exclude2  ) {
            continue;
        }
        $categories_list .=
            \'<li><a href="\' . get_category_link( $category->cat_ID ) . \'">\' .
            $category->name .
            \'</a></li>\';
    }

    return \'<ul class="post-categories">\' . $categories_list . \'</ul>\';
}
然后在我的循环中,而不是使用get_the_category_list($post->ID), 我使用了新功能custom_get_the_category_list().

这当然有效,但如果有人找到更简单的解决方案,请发帖。

相关推荐

如何为class-wp-query.php追踪这些PHP通知和警告的原因?

我的WordPress调试。日志文件中充满了这些PHP通知,间隔大约15分钟,然后是几个小时…[23-Mar-2018 05:33:00 UTC] PHP Notice: Trying to get property of non-object in /home/mysite/public_html/wp-includes/class-wp-query.php on line 3736 [23-Mar-2018 05:33:00 UTC] PHP Notice: Trying to get p