我创建了一个自定义帖子类型(称之为“我的帖子类型”)我创建了一个archive-my-post-type.php
显示所有自定义帖子类型的页面查看侧边栏的“最近的帖子”部分,我注意到none of custom post types are showing up.我想要定制的帖子类型to show in Recent Posts 还有我读了this article 在WP Stack上显示我可以使用pre_get_posts
将我的自定义帖子类型添加到最近的帖子(侧栏)我试过了。这不起作用所以。。。
我做了一些调查pre_get_posts
据我所知。。。
pre_get_posts
用于更改the main loop.
也
the codex 给出以下警告:
Identifying Target Queries
使用pre\\u get\\u posts时,请注意您正在更改的查询。一个有用的工具是\\u main\\u query(),它可以帮助您确保要修改的查询
is only the main query.
标题中的短语“target querys”(目标查询)在我看来似乎意味着can “target”我要修改的查询同时code from stack 而且does not use is_main_query()
. 所以现在我想知道。。。是“最近的帖子”NOT “主查询”的一部分因此,我添加了一些代码,以准确查看页面上运行的查询和two queries...
此查询位于整个页面上方(后面是我的所有自定义帖子)。。。
\'SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = \'press-release\' AND (wp_posts.post_status = \'publish\') ORDER BY wp_posts.post_date DESC LIMIT 0, 10\'
另一个查询在上面
the sidebar...
\'SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = \'post\' AND (wp_posts.post_status = \'publish\') ORDER BY wp_posts.post_date DESC LIMIT 0, 5\'
我想将我的自定义帖子类型添加到
this 查询
我是否可以(也应该)使用pre\\u get\\u posts来实现这一点?
我是个新手,所以我真的希望这个问题有意义。
最合适的回答,由SO网友:Dan Ștefancu 整理而成
你不应该用pre_get_posts
, 因为它将改变站点中的所有查询。
此外,最近发布的插件所做的查询不是主查询。主查询用于在解析URL中的查询变量后显示当前页面,并负责当前页面模板的其他工作。
你应该做的是第十八个过滤器widget_posts_args
:
add_filter( \'widget_posts_args\', \'wp130512_recent_posts_args\');
/**
* Add CPTs to recent posts widget
*
* @param array $args default widget args.
* @return array $args filtered args.
*/
function wp130512_recent_posts_args($args) {
$args[\'post_type\'] = array(\'post\', \'my_CPT\');
return $args;
}
或
扩展最近发布的小部件类(WP_Widget_Recent_Posts
) 更多控制。
示例代码:http://rollinglab.com/2012/06/extend-wordpress-recent-posts-widget/