如何在循环中强制执行特定的自定义POST类型

时间:2012-12-09 作者:Tsahi Levent-Levi

我正在开发一个博客,其中的主要帖子都是自定义的帖子类型。

让我们假设它是一个Book custom post类型。

我希望/author/admin页面列出作者管理员的书籍,但相反,它会去搜索管理员的帖子,这是内置的基本帖子类型。

如何使我的自定义post type Book用于所有此类索引查询?(主页、作者、搜索等)。

3 个回复
SO网友:Milo

您可以通过pre_get_posts 操作和检查是否is_main_query:

function wpa75492_post_type_query( $query ) {
    if ( $query->is_main_query() ) {
        $query->set( \'post_type\', array( \'book\' ) );
    }
}
add_action( \'pre_get_posts\', \'wpa75492_post_type_query\' );

SO网友:Shaon

此处使用参数post\\u type=自定义post type slug

例如,如果您的post type slug是“product”,则使用如下代码:

query_post("post_type=product");

SO网友:Mark.C

在循环之前,您需要从特定的帖子类型查询帖子。因此,在您的作者存档页面或任何页面模板上,在循环之前添加以下内容:

query_posts(array(
    \'post_type\'   => \'book_posttype\',
    \'author_name\' => \'mark\'
));
Query\\u posts也可以采用其他参数。

http://codex.wordpress.org/Function_Reference/query_posts

它可以使用与WP\\u query相同的参数。其中之一是author\\u name。

http://codex.wordpress.org/Class_Reference/WP_Query#Parameters

您还可以添加一个作者页面模板,将此查询放入其中并循环。这将是您的主题目录中的一个名为author mark的页面。php或任何名称。

结束

相关推荐

Added if statement to loop

我想给我的循环添加一个功能。与自定义post类型一起使用的php。然而,我不想让它显示在所有帖子上,只想显示那些自定义帖子类型的帖子(比如它被称为“review”)。有没有办法说如果post type=review,那么显示这个新部分,否则隐藏?我试过使用<?php if( get_post_type() == \'reviews\' ) 但我不知道如何将else语句表述为什么都不做,然后正常继续。非常感谢。