如何使用“PRE_GET_POST”使我的自定义帖子类型显示在最近的帖子中

时间:2013-05-12 作者:sleeper

我创建了一个自定义帖子类型(称之为“我的帖子类型”)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来实现这一点?

我是个新手,所以我真的希望这个问题有意义。

1 个回复
最合适的回答,由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/

结束

相关推荐