我修改了Ashfame的以下代码:
add_action(\'pre_get_posts\', \'block_cat_query\' );
function block_cat_query() {
global $wp_query;
if( is_home() || is_search() || is_tag() ) {
$wp_query->query_vars[\'cat\'] = \'3\';
}
}
此代码只用于在主页、搜索和标记页面上过滤类别#3中的帖子。
然而,我正在利用
<?php single_tag_title(); ?>
在我的标题中。php文件和特定标记页上,标记标题不会显示。页面将显示类别标题。这只会在这个函数存在的情况下发生,所以我想知道是否有其他方法来编写上面的函数,而不会影响
<?php single_tag_title(); ?>
在标记页上。
最合适的回答,由SO网友:Milo 整理而成
如果要更正的唯一问题是single_tag_title
, 通过直接获取标记查询变量,可以通过过滤器更正该值:
function wpa90852_fix_tag_title(){
$tag = get_term_by( \'slug\', get_query_var(\'tag\'), \'post_tag\' );
return $tag->name;
}
add_filter( \'single_tag_title\', \'wpa90852_fix_tag_title\' );
SO网友:kaiser
有很多方法for the WP_Query
你可以用来实现你的目标。如果要阻止上的类别,请执行以下操作:
在home
第页Search
-标签页上的结果页,然后您可以使用category__not_in
.
add_filter( \'pre_get_posts\', \'wpse90852_block_cat_query\' );
function wpse90852_block_cat_query( $query )
{
if ( is_admin() )
return $query;
if ( $query->is_main_query() && ( $query->is_home() || $query->is_search() || $query->is_tag() ) )
{
$query->set( \'category__in\', 3 );
}
return $query;
}
SO网友:Horttcore
首先你必须找到正确的钩子,在这里pre_get_posts
. 然后你必须检查一下你是否在头版(is_front_page()
) 如果您在主查询中(is_main_query
). 作为$query
作为参数提供,很容易更改查询。
/**
* WordPress Answers #90852
*
* @param obj $query WP_Query object
* @return void
* @author Ralf Hortt
**/
function pre_get_posts_90873( $query )
{
if ( is_front_page() && $query->is_main_query() && !is_admin() ) :
$query->query_vars[\'cat\'] = 3;
endif;
}
add_action(\'pre_get_posts\', \'pre_get_posts_90873\' );
附言:好的,我看看问题有没有变。我还是让她回答我的问题,以防万一有人想知道。