添加一个过滤器以添加一个类来标记WordPress中的链接 - php

我想添加一个过滤器来修改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…