我们希望清理一些WordPress URL,并按照以下格式进行一些重写:
实际URL:产品一/产品一指南/
实际URL:产品二/产品二指南/
重写URL:产品一/指南/
重写URL:产品二/指南/
这允许我们在不同的产品中使用相同的子文件夹名称。(无重复的slug问题)
总之,我在函数中有一个函数。实现此功能的php:
// URL replaces
function updateToPerfectURLs($content) {
$new_content = $content;
$new_content = str_replace("/product-one-", "/", $new_content);
$new_content = str_replace("/product-two-", "/", $new_content);
return $new_content;
}
我现在想做这样的事情:
<?php updateToPerfectURLs(the_permalink())?>
但由于某些原因,没有进行更换,我的永久链接仍会出现如下情况:
domain.com/product-one/product-one-guides
有人能想出一个原因吗?
最合适的回答,由SO网友:Tom J Nowell 整理而成
它不起作用,因为您混淆了返回值和回显值
updateToPerfectURLs(the_permalink());
在这里
updateToPerfectURLs
返回其值,但尚未打印出来。尝试回声/等
你的第二个问题恰恰相反,the_permalink()
不返回permalink,它会发出回声。因此,在你还没有开始函数之前,permalink就已经打印出来了。使用get_permalink()
相反
最后,不要将函数调用直接传递给另一个函数调用,这会使读取和调试变得更加困难
为您提供:
$permalink = get_permalink();
echo updateToPerfectURLs( $permalink );
当然,可能有一种更好的方法可以做到这一点,即使用各种过滤器,而不必在函数中硬编码产品名称。这将是一个你应该问的新问题!我想这会对很多人有用。也许重写端点也可以工作