筛选器SINGLE_CAT_TITLE避免面包屑

时间:2014-03-09 作者:kekko12

我正在开发一个简单的插件,我需要过滤类别页面中的单个\\u cat\\u标题,在每个类别页面中添加一些html。

这样做:

function subtitleCategory ($title) {
    return $title."</div></div></div><div class=\\"container_24\\"><h2 id=\\"category-subtitle\\">TEST1</h2></div>";
}

add_filter(\'single_cat_title\', \'subtitleCategory\');
我得到了我需要的。但是我注意到这个过滤器也适用于面包屑(有一个调用breadcrumbs.php) 这意味着在同一页中出现两次(不是我需要的)。

你知道有没有一个条件可以只过滤标题而不过滤面包屑?我试过了in_the_loop, is_category, is_archive, is_tax 等等,但没有成功。

--编辑——是的,面包屑。php是一个主题文件,您不应该考虑它。我正在尝试实现一个管理面板,您可以在其中为每个类别放置一些文本(带有html),并且该文本将显示在类别页面中标题的后面。我试图用一个插件来实现这一点,由于这个原因,它不能与任何主题依赖相结合。

2 个回复
SO网友:s_ha_dum

是的,可能有一种方法可以做到这一点,但它将依赖于主题/插件。不知道细节,我认为不可能有一个好的答案。然而,有几个通用的案例解决方案。

第一种方法是将回调添加到在面包屑代码之后运行的挂钩上。

function subtitleCategory ($title) {
  return $title."</div></div></div><div class=\\"container_24\\"><h2 id=\\"category-subtitle\\">TEST1</h2></div>";
}
function hook_in_after_breadcrumb($qry) {
  add_filter(\'single_cat_title\', \'subtitleCategory\');
}
add_action(\'some_hook\',\'hook_in_after_breadcrumb\');
我不知道是什么some_hook 应该是主题/插件相关的。

您可以计算筛选器触发的实例数并将其作为目标:

function subtitleCategory ($title) {
  static $c = 0;
  $c++;
  if (2 === $c) {
    return $title."</div></div></div><div class=\\"container_24\\"><h2 id=\\"category-subtitle\\">TEST1</h2></div>";
  }
}
add_filter(\'single_cat_title\', \'subtitleCategory\');
不过,改变主题或插件可能会打破这种有些笨拙的手动解决方案。

SO网友:Qaisar Feroz

另一种方法是使用add_filter 之前single_cat_title(\'Category: \');然后使用remove_filter.

Example:

add_filter(\'single_cat_title\', \'subtitleCategory\');
single_cat_title(\'Category: \');
remove_filter(\'single_cat_title\', \'subtitleCategory\');

结束