第一次定位the_category()
在Codex. 向下滚动至页面底部至“源代码”。有一个链接“the_categfory()
位于。。。。单击该链接,您将被重定向到source code. 交替打开文件wp-includes/category-template.php
在IDE或编辑器中。
现在搜索function the_category()
. 您将看到该函数调用另一个函数get_the_category_list()
. 也搜索此函数。现在阅读代码并搜索apply_filters()
或add_action()
正如你所看到的,只有一个apply_filters()
在函数末尾调用。如果仔细阅读代码,您现在就会知道,您只能过滤由创建的完整htmlthe_category()
.
有几种方法可以修改html。DOMDocument就是其中之一preg_replace_callback()
另一个。
function add_class_callback( $result ) {
$class = strtolower( $result[2] );
$class = str_replace( \' \', \'-\', $class );
// do more sanitazion on the class (slug) like esc_attr() and so on
$replacement = sprintf( \' class="%s">%s</a>\', $class, $result[2] );
return preg_replace( \'#>([^<]+)</a>#Uis\', $replacement, $result[0] );
}
function add_category_slug( $html ) {
$search = \'#<a[^>]+(\\>([^<]+)\\</a>)#Uuis\';
$html = preg_replace_callback( $search, \'add_class_callback\', $html );
return $html;
}
add_filter( \'the_category\', \'add_category_slug\', 99, 1 );
这很容易,不是吗?在上应用筛选器
the_category
钩搜索
<a followed by some chars but not >[group the chars until <]</a>
, 将结果传递给回调函数。回调函数检索一个包含所有搜索结果的数组,我们选择最后一个,这是链接的文本。然后从文本中创建一个类,请(自己)很好地进行清理。最后,插入class属性并将生成的结果返回给
preg_replace_callback()
weher它将替换为搜索结果。
是的,我非常喜欢DOM操作。。。不是;)
哦,我忘了。您也可以使用jQuery来实现这一点。搜索类“”。post categories(发布类别),grep list标记中的所有链接标记,遍历结果并获取href属性,将其转换为propper classname,添加带有.addClass(class)
链接标记。