排除Wordpress类别

时间:2019-02-11 09:45:57

标签: php wordpress categories

我有一个循环,确实显示了要在存档页面上显示的不同类别。

如何仅一次显示类别?

当前,如果两个帖子具有相同的类别,则该类别将是两次

这是我的下面的代码

        <div class="row ptb-20">

            <?php

            $args = array(
                'category_name' => 'actualites',
            );

            // Custom query.
            $query = new WP_Query( $args );

            // Check that we have query results.
            if ( $query->have_posts() ) {

                // Start looping over the query results.
                while ( $query->have_posts() ) {

                    $query->the_post();?>

                    <div class="category-filter">
                        <div class="single-filter">

                            <?php

                            $categories = get_the_category();
                            $separator = ", ";
                            $output = ' ';

                            if ($categories) {

                                foreach ($categories as $category) {

                                    $output .= '<li><a href="' . get_category_link($category->term_id) . '">' . $category->cat_name . '</a></li>';

                                }

                                echo trim($output, $separator);

                            }

                            ?>

                        </div>   
                    </div>

                    <?php

                } // End while 
            } // End if

            else { echo '<p>Aucune actualité trouvée</p>'; } ?>

            <?php wp_reset_postdata(); ?>

        </div>

2 个答案:

答案 0 :(得分:0)

方法1:使用插件从WordPress中排除类别 您需要做的第一件事是安装并激活 Ultimate Category Excluder插件。有关更多详细信息,您应按照我们的指南安装WordPress插件。

激活后,您需要转到设置»类别排除程序页面。它将显示您的WordPress博客上可用的所有类别。

方法2:使用代码从WordPress主页中排除类别 此方法要求您将代码添加到WordPress文件中。如果您以前没有做过,请参阅我们的指南,了解如何在WordPress中复制和粘贴代码段。

您将需要在主题的functions.php文件或特定于站点的插件中添加以下代码。

   function exclude_category_home( $query ) {
    if ( $query->is_home ) {
    $query->set( 'cat', '-5' );
    }
    return $query;
    }


add_filter( 'pre_get_posts', 'exclude_category_home' );

不要忘记将ID(-5)替换为您的类别ID。它将隐藏主页中属于该ID类别的所有博客文章。

注意:请确保添加带有类别ID的减号(-)。

请参考:https://www.wpbeginner.com/wp-tutorials/how-to-exclude-a-category-from-your-wordpress-homepage/

答案 1 :(得分:0)

如果我正确理解了您的问题,则可以引入一个变量,您可以在其中记住已经使用了哪些类别,因此不要多次包含它们。

    <div class="row ptb-20">

        <?php

        $args = array(
            'category_name' => 'actualites',
        );

        // Custom query.
        $query = new WP_Query( $args );

        // Check that we have query results.
        if ( $query->have_posts() ) {

            // Start looping over the query results.
            while ( $query->have_posts() ) {

                $query->the_post();?>

                <div class="category-filter">
                    <div class="single-filter">

                        <?php

                        $categories = get_the_category();
                        $categories_displayed = [];
                        $separator = ", ";
                        $output = ' ';

                        if ($categories) {

                            foreach ($categories as $category) {
                                if (!in_array($category->cat_name, $categories_displayed)) { 
                                    $output .= '<li><a href="' . get_category_link($category->term_id) . '">' . $category->cat_name . '</a></li>';

                                    $categories_displayed[] = $category->cat_name;
                                }
                            }

                            echo trim($output, $separator);

                        }

                        ?>

                    </div>   
                </div>

                <?php

            } // End while 
        } // End if

        else { echo '<p>Aucune actualité trouvée</p>'; } ?>

        <?php wp_reset_postdata(); ?>

    </div>