当前位置: 首页 > 知识库问答 >
问题:

WordPress:在分类页面上自定义文章类型隔离

充阳秋
2023-03-14

我有两种自定义的帖子类型,例如“Cars”和“Bikes”。我使用Wordpress的默认类别对两种帖子类型中的帖子进行了分类。例如,假设类别为“红色”、“蓝色”和“黑色”。

我在这里试图实现的是,当我进入“红色”的分类页面时,我想看到“红色”下的“汽车”和“自行车”。我正在使用category.php,这是我试图运行的查询:

$car_args = array(
                    'posts_per_page'   => -1,
                    'orderby'          => 'date',
                    'order'            => 'DESC',
                    'post_type'        => 'cars',
                    'post_status'      => 'publish',
                    'cat'              => $cat
                );

                // The Query
                $car_query = new WP_Query( $car_args );

                // The Loop
                if ( $car_query ->have_posts() ) {
                echo "<h3>Cars</h3>";
                    while ( $car_query->have_posts() ) {
                        $car_query->the_post();
                        echo get_post_type() . '<a href="'. get_permalink() .'">' . get_the_title() . '</a><br />';
                    }
                } else {
                    // no posts found
                }

$bikes_args = array(
                    'posts_per_page'   => -1,
                    'orderby'          => 'date',
                    'order'            => 'DESC',
                    'post_type'        => 'bikes',
                    'post_status'      => 'publish',
                    'cat'              => $cat
                );

                // The Query
                $bikes_query = new WP_Query( $bikes_args );

                // The Loop
                if ( $bikes_query ->have_posts() ) {
                echo "<h3>Bikes</h3>";
                    while ( $bikes_query->have_posts() ) {
                        $bikes_query->the_post();
                        echo get_post_type() . '<a href="'. get_permalink() .'">' . get_the_title() . '</a><br />';
                    }
                } else {
                    // no posts found
                }

                /* Restore original Post Data */
                wp_reset_postdata();

查询中的$cat获取“Red”类别的类别id。这两个查询都正确地按“红色”类别限制了帖子,但同时出现了“汽车”帖子类型和“自行车”帖子类型的帖子,尽管我尝试按帖子类型进行限制。我在几篇文章中读到Wordpress忽略了分类页面上的post类型args。这是真的吗?如果是,是否有解决方法?

共有1个答案

王高超
2023-03-14

您试图做的事情只能用一个查询来完成,并且只能用主查询来完成,而不需要任何自定义查询。

首先,让我们先将自定义帖子类型添加到分类页面。默认情况下,自定义pist类型从类别页面中排除。因此,我们需要通过pre\u get\u posts手动将其添加到主查询参数中。在functions.php中添加以下内容:(注意:未经测试,还需要PHP5.3)

add_action( 'pre_get_posts', function ( $q )
{
    if ( !is_admin() && $q->is_main_query() && $q->is_category() ) {
        $q->set( 'post_type', array( 'post', 'cars', 'bikes' ) ); // Change this according to your post types
        $q->set( 'nopaging', true ); // This will get all posts, same as posts_per_page=-1
    }
});

你现在应该有一个点击的类别中的所有文章,这是你在你的类别页面上设置的文章类型。

接下来,我们需要整理您的循环。删除category.php中的所有自定义查询,并将其替换为默认循环。由于您需要按post类型排序两个块,因此我们将使用倒带\u posts(),以便可以运行两次循环

if ( have_posts() ) {
    while ( have_posts() ) {
    the_post();

        if ( $post->post_type == 'cars' ) { //Change accordingly to only show cars in this loop

            // Your loop

        }
    }

    rewind_posts();

    while ( have_posts() ) {
    the_post();

        if ( $post->post_type == 'bikes' ) { // Change accordingly to only show bikes

            // Your loop

        }
    }
}

这现在应该显示您的帖子在两个块按帖子类型排序

 类似资料:
  • 我有一个与自定义分类法(支持)相关的自定义帖子类型(问题) 在我的主题/分类中。php我有以下代码: 这意味着我针对“支持”分类法的特定模板文件。 在分类法模板文件中,我进行了自定义查询: 我有大约11篇文章,第1页显示了前5篇文章,但问题是没有显示分页。 有什么想法吗?非常感谢。

  • 您好,我正在尝试将分页添加到一个页面模板中,我正在使用该模板来显示自定义帖子类型。我已经环顾四周几个小时了,但还没有找到一套清晰的说明。 下面是我页面模板php文件中的所有代码。如果有人能给我指出正确的方向,我将不胜感激。 我将感谢任何关于如何添加代码的帮助 我可以通过直接链接推荐书/page/2/访问第2页。但是在第1页上,导航没有出现。 第1页: 第2页:

  • 我的股票与分页我尝试了很多解决方案,但没有工作!我使用WordPress5.4。我的网站是一个单页网站,当然我想在索引中使用它。php 这是我的密码: 很抱歉,如果这是一个高度重复的问题——我发现的其他修复方法都不适用于我。请有人告诉我问题在哪里? 谢谢! 编辑1我尝试了这个,它也不工作!

  • 我是个新手,我正在努力发展我的第一个主题。 不幸的是,我遇到了一些麻烦与自定义后类型(项目)。我已经尝试了关于这个主题的不同组合(query_post、WP_Query、同花永久链接等)。),但似乎没有一个适合我。 我尝试使用插件wp_pagenavi。 这是我的注册帖子类型,在函数中。php: 以下是模板中列出我的自定义帖子类型“projet”的代码: 目前,这段代码列出了2最后一个自定义帖子类

  • 我正在使用wordpress,并尝试为类别页面创建自定义描述。 我修改了它的header.php文件,以响应自定义标题和描述。但是Wordpress正在用第一篇文章的元描述替换我的元描述。 我怎样才能阻止这一切? 我的代码: 我使用电子电影主题:http://fthemes.com/emovies-free-wordpress-theme/ 我的网站类别链接:http://www.raagalu.

  • 我正在构建一个WordPress主题,其中的博客文章是使用一个自定义的文章类型标题为“博客” 博客页面位于http://website.com/blog/上,当发布“blogs”类型的文章时,它只发布到/blog/page上。我的问题是,当我单击一个博客标题来查看单个博客时,URL被重定向到http://website.com/post-title,而不是http://website.com/bl