在分类模板页面上,想要添加Post_Type

时间:2011-06-07 作者:Sam K

我的主题中有一个自定义分类法模板页面。本质上,当有人单击此分类法的术语链接时,我总是想向查询中添加特定的帖子类型。

我不完全确定如何做到这一点,我发现PHP 5.3中包含的一些函数似乎可以做到这一点,但我的主机上安装了5.2。

但是,我基本上希望接受当前的$wp\\u查询,添加“post type”=>“我的自定义post type”,然后在我的循环中继续使用$wp\\u查询。这可能吗?

我可能太累了,压力也太大了,有一种更简单的方法可以做到这一点,我就是想不出它=D

谢谢

编辑----

好的,很明显我的方法论已经不适用了。可能是疲劳的直接结果。

我确实找到了操纵$wp\\u查询的代码,以添加我想要的内容;但它并没有得到预期的结果:

function _my_method(&$item, $key) {
    if ($key == \'post_type\') {
        $item = \'backend_data\';
    }
}
array_walk_recursive( $wp_query , \'_my_method\' );
因此,在数组的QUERY\\u VARS部分,现在post\\u type有一个值backend\\u data。除了在$wp\\u query数组的后面,我仍然可以看到它查询所有可用的帖子类型。

[request] => SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN 
wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( 
wp_term_relationships.term_taxonomy_id IN (35) ) AND wp_posts.post_type IN (\'post\', 
\'page\', \'attachment\', \'company\', \'backend_data\', \'ps_promotion\') AND (wp_posts.post_status = \'publish\' OR wp_posts.post_author = 1 AND wp_posts.post_status = \'private\') GROUP BY 
wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10 [posts] => Array ( [0] => 
backend_data [1] => stdClass Object ( [ID] =>
然后是两个柱子,它的拉力在“柱子”上。。。但是,在开始提取post信息之前,它会再次列出backend\\u数据。但我显然对wordpress和数组的内部工作机制了解不够,无法理解它在这一点上所做的工作=D

编辑-----

好吧,现在我确信我的大脑已经变得模糊,必须有一种更为文字化的方式来做到这一点,因为php数组黑客没有做到这一点=D我尝试抛出一些wp\\u reset\\u query();首先是在我的上述函数之前,然后是之后,它仍然输出相同的东西,所有的帖子类型都占了上风。

所以,我想我无缘无故地在我的问题中添加了这一切:(

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

您可以使用pre_get_posts 筛选挂钩以检查您是否在分类页面上,如果是,只需将自定义帖子类型添加到查询中,如下所示:

function add_my_type( $query ) {
    if ( $query->is_tax(\'YOUR_TAXONOMY\') ) {
        $query->set( \'post_type\', array(\'post\',\'YOUR_CUSTOM_POST\') );
    }
}
add_filter( \'pre_get_posts\', \'add_my_type\' );

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。