在我的网站上,我根据以下类别进行了一些编码in_category(\'featured\')
做点什么。现在,这只适用于职位。以及与featured
类别也与其他类别关联。因为它只与featured
类别以特殊设计显示,就是这样。
现在我知道这个问题在这里已经讨论过很多次了,但并不完全是我想要的。因此,在降级这个问题之前,请将其适当地红色化。
在这个帖子里is there a quick way to hide category from everywhere? 以下函数用于排除某些类别,但我不想排除它,我只想隐藏它。
add_action(\'pre_get_posts\', \'wpa_31553\' );
function wpa_31553( $wp_query ) {
//$wp_query is passed by reference. we don\'t need to return anything. whatever changes made inside this function will automatically effect the global variable
$excluded = array(272); //made it an array in case you need to exclude more than one
// only exclude on the front end
if( !is_admin() ) {
$wp_query->set(\'category__not_in\', $excluded);
}
}
例如,假设一篇帖子与
featured
类别,也与
Work
类别现在作为
featured
是按字母顺序排在第一位的面包屑(使用Yoast SEO面包屑)将显示
featured
作为类别名称,帖子元(显示在帖子下方)将显示两个类别名称,即。
featured
和
work
.
这就是为什么我想隐藏featured
完全分类,这样前端用户就不会知道featured
类别存在。它不会出现在面包屑、贴子元、贴子类别列表中,也不会出现在何处。它将保持隐藏状态,但在后端代码中,当我尝试对其中的那些帖子执行特定操作时,它仍将起作用featured
类别使用in_category(\'featured\')
.
是否有人知道如何获得此类别隐藏(不排除)功能。
最合适的回答,由SO网友:Alessandro Benoit 整理而成
将对in\\u category(\'featured\')的所有调用替换为category(\'featured\')中的自定义函数,并在函数中声明它。php:
/**
* @param string $category
*
* @return bool
*/
function inCategory($category)
{
global $wpdb, $post;
if ( ! $post) {
return false;
}
$query = $wpdb->prepare("SELECT COUNT(t.term_id)
FROM $wpdb->terms AS t
INNER JOIN $wpdb->term_taxonomy AS tt ON tt.term_id = t.term_id
INNER JOIN $wpdb->term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tr.object_id = %d
AND tt.taxonomy = \'%s\'
AND t.slug = \'%s\'
", $post->ID, \'category\', $category);
return (bool) $wpdb->get_var($query);
}
添加以下筛选器:
/**
* @param array $terms
*
* @return array
*/
function remove_featured_category_from_frontend(array $terms)
{
if ( ! is_admin()) {
$terms = array_filter($terms, function ($term) {
if ($term->taxonomy === \'category\') {
return $term->slug !== \'featured\';
}
return true;
});
}
return $terms;
}
add_filter(\'get_terms\', \'remove_featured_category_from_frontend\');
add_filter(\'get_object_terms\', \'remove_featured_category_from_frontend\');
试试看,让我知道。