从PERVICE_POSTS_LINK()中删除尾部斜杠

时间:2019-02-08 作者:aMJay

我正在尝试删除从中获取的链接的尾部斜杠previous_posts_link() 作用这是我的代码:

<?php rtrim(previous_posts_link( __( \'text\', \'name\' ) ), \'/\'); ?>
不幸的是,它不起作用,我仍然在url的末尾得到斜杠。

3 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

这里有两个问题:

  1. previous_posts_link() 回显链接,而不是返回链接
  2. 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助手函数,用于删除前后斜杠。

SO网友:Serge Andreev

尝试在函数中添加行。php

add_filter(\'paginate_links\',\'untrailingslashit\');

SO网友:moisty70

您可以将此行添加到函数中。php

add_filter(\'get_pagenum_link\',\'untrailingslashit\');

相关推荐

Two urls for one website

我有一位客户,他用一个名为“firstname lastname.ch”的url开始了他的小生意。因为他很幸运能够成长,现在需要一个合适的URL,所以他希望自己的网站有另一个URL,名为“businessype lastname.ch”在没有太多管理和SEO问题的情况下,实现这一目标的最佳方式是什么。谢谢