我想添加一个过滤器来修改WP中get_the_tag_list
生成的链接。它调用get_the_term_list
function get_the_term_list( $id, $taxonomy, $before = '', $sep = '', $after = '' ) {
$terms = get_the_terms( $id, $taxonomy );
if ( is_wp_error( $terms ) )
return $terms;
if ( empty( $terms ) )
return false;
$links = array();
foreach ( $terms as $term ) {
$link = get_term_link( $term, $taxonomy );
if ( is_wp_error( $link ) ) {
return $link;
}
$links[] = '<a href="' . esc_url( $link ) . '" rel="tag">' . $term->name . '</a>';
}
我想添加class="tag"
,但是我不确定如何为我的functions.php文件编写过滤器,使其仅定位该函数的$links[]
位。我可以排除旧的链接集,然后以某种方式添加修改后的链接集吗?
我本来想添加这样的东西,但是我以某种方式错了:
add_filter('get_the_term_list','replace_content');
function replace_content($links[])
{
$links[] = str_replace('<a href="', '<a class="tag" href="', $links[]);
return $links[];
}
参考方案
您犯了两个错误。首先在get_the_term_list
上添加过滤器将不起作用,因为它不是过滤器。如果您查看get_the_term_list
的代码,则会看到这样的一行(取决于您的WP版本)
$term_links = apply_filters( "term_links-$taxonomy", $term_links );
因此,如果您的分类法是标记,则可以在term_links-$taxonomy
上添加过滤器。
您犯的第二个错误是str_replace
与数组结合使用。如果要使用数组,则无需在变量后添加[]。这仅用于将=
之后的部分分配给数组的下一项。在这种情况下,您在整个数组上执行str_replace
,因此在分配和$links
中都应使用$links[]
而不是str_replace
,否则,您毕竟要添加一个新数组(使用字符串替换)当前数组的链接。
add_filter( "term_links-post_tag", 'add_tag_class');
function add_tag_class($links) {
return str_replace('<a href="', '<a class="tag" href="', $links);
}
PHP:将数组值加在一起 - php我相信这比标题听起来要难一些,但我可能完全错了。我有一个像这样的数组:[["londrina",15],["cascavel",34],["londrina",23],['tiradentes',34],['tiradentes',21]] 我希望能够采用通用…
PHP JQuery复选框 - php我有以下片段。 var myData = { video: $("input[name='video[]']:checked").serialize(), sinopse: $("#sinopse").val(), dia: $("#dia").val(), quem: $(…
PHP strtotime困境 - php有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…