将前导零添加到分页

时间:2017-12-05 作者:andersonslookout

所以我对Wordpress和开发还是个新手,尝试在分页后的数字中添加一个前导零。我想到的代码如下:

function leading_zero_wp_link_pages_link( $i ) {
$i = zeroise($i, 2);
return $i;
}

add_filter( \'wp_link_pages_link\',  \'leading_zero_link_pages_link\' );
这当然行不通。我知道我需要修改codex中指定的“$I”整数变量,我几乎肯定会误解挂钩/过滤器的工作原理,任何帮助都会很好!

1 个回复
SO网友:Jacob Peattie

wp_link_pages_link 过滤整个HTML链接(<a href... 等等),这就是为什么你所得到的不起作用。似乎没有只针对页码的筛选器,$i, 所以你需要一个变通方法。

由于wp_link_pages_link 过滤器通过$i, 我们可以使用它来查找HTML中的数字并替换它。

简单的版本是$i 在…内$link:

function wpse_287783_zeroize_page_numbers( $link, $i ) {
    $zeroised = zeroise( $i, 2 );

    $link = str_replace( $i, $zeroised, $link );

    return $link;
}
add_filter( \'wp_link_pages_link\', \'wpse_287783_zeroize_page_numbers\', 10, 2 );
此解决方案有两个相关问题:

这也会影响URL中的页码,我们不想这样做,因为这纯粹是表面现象所以我们需要做的只是替换HTML标记中的数字。为此,我们可以使用正则表达式:

function wpse_287783_zeroize_page_numbers( $link, $i ) {
    $zeroised = zeroise( $i, 2 );

    $link = preg_replace( \'/>(\\D*)(\\d*)(\\D*)</\', \'>${1}\' . $zeroised . \'${3}<\', $link );

    return $link;
}
add_filter( \'wp_link_pages_link\', \'wpse_287783_zeroize_page_numbers\', 10, 2 );
现在有人可能能够提供更好的正则表达式,因为我对它们一窍不通,但是什么呢\'/>(\\D*)(\\d*)(\\D*)</\' 是否获取介于><, 这将是标签中的内容,并返回3个内容:任何数字前的文本、任何数字和数字后的文本。前后的文本仍然只影响数字,如果link_before, link_afterpagelink 从…起wp_link_pages() 有任何其他文本。

具有preg_replace() 我们正在用页码的零化版本替换返回的第二个内容,即数字。

结束