这里有两个问题:
previous_posts_link()
回显链接,而不是返回链接previous_posts_link()
返回链接的完整HTML,包括<a href="">
等等。
1的问题是,您无法将函数的结果传递给另一个函数(例如
rtrim()
) 作为参数,该函数需要
return
值,而不是使用
echo
或类似。返回
previous_posts_link()
是
get_previous_posts_link()
.
但是,这仍然无法解决您的问题,因为#2。get_previous_posts_link()
将返回如下值:
\'<a href="https://example.com/2019/02/08/previous-post/">« Previous Post</a>\'
正如您所看到的,这不会以斜杠结束。斜杠作为URL的一部分位于字符串的中间。
如果只需要URL,则需要使用get_previous_posts_page_link()
. 然后可以删除尾部斜杠:
<?php echo rtrim( get_previous_posts_page_link(), \'/\' ); ?>
现在,只是为了覆盖我所有的基础;如果您想获得完整的HTML链接并删除其中的尾部斜杠,那么您将需要更多的步骤。
首先,您需要使用get_previous_posts_link()
, 它是返回完整HTML的函数,而不是回显它。然后需要从HTML中提取URL,删除尾部斜杠,然后将其放回原处。看起来是这样的:
// Get the HTML for the link.
$previous_posts_link = get_previous_posts_link( __( \'text\', \'name\' ) );
// Find the URL.
preg_match( \'/href="([^"]*)"/\', $previous_posts_link, $matches );
// Remove the trailing slash from the original URL.
$original_url = $matches[1];
$trimmed_url = untrailingslashit( $original_url );
// Replace the original URL with the version without a slash.
$previous_posts_link = str_replace( $original_url, $trimmed_url, $previous_posts_link );
// Output it
echo $previous_posts_link;
我不知道你为什么想要或需要这样做。
PS:untrailingslashit()
是一个WordPress助手函数,用于删除前后斜杠。