替换存档小部件链接文本

时间:2018-03-06 作者:Nathan

我正在尝试用高棉(柬埔寨)数字替换存档小部件链接中的罗马数字(以及所有其他数字)。

但是,虽然我确实用这段代码替换了链接文本,但它也替换了链接url,然后断开了链接。

如何只替换存档链接文本而不是url?

function convert_numbers_to_khmer( $string ) {
    $khmer_numbers = array(\'០\', \'១\', \'២\', \'៣\', \'៤\', \'៥\', \'៦\', \'៧\', \'៨\', \'៩\', \'.\');
    $english_numbers = array(\'0\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'.\');
    return str_replace($english_numbers, $khmer_numbers, $string);
}

function make_khmer_time( $the_time ) {
    if ( get_bloginfo( \'language\' ) == \'km\' ) {
        $the_time = convert_numbers_to_khmer( $the_time );
    }
    return $the_time;
}
add_filter( \'get_the_time\', \'make_khmer_time\' );
add_filter( \'get_the_date\', \'make_khmer_time\' );
add_filter(\'comments_number\', \'make_khmer_time\');
add_filter(\'get_archives_link\', \'make_khmer_time\');

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

您可以使用正则表达式和preg_replace_callback() 功能:

function _make_khmer_link_replace_callback( array $matches ) {
    return \'<a\' . $matches[1] . \'>\' . convert_numbers_to_khmer( $matches[2] ) . \'</a>\';
}

function make_khmer_link( $link ) {
    if ( get_bloginfo( \'language\' ) == \'km\' ) {
        $link = preg_replace_callback( \'#<a(.*?)>(.+?)</a>#\', \'_make_khmer_link_replace_callback\', $link );
    }
    return $link;
}
add_filter(\'get_archives_link\', \'make_khmer_link\');
PS:您可以看到完整的代码(包括您现有的functions) 在Pastebin.

结束