Php Wordpress永久链接,包括名称和ID,但只考虑ID
我有一个WordPress网站,我想模仿某些新闻媒体和门户网站生成URL的方式 例如,您有一篇名为“男人爱女人”的文章,CMS软件将创建如下url:Php Wordpress永久链接,包括名称和ID,但只考虑ID,php,wordpress,blogs,permalinks,Php,Wordpress,Blogs,Permalinks,我有一个WordPress网站,我想模仿某些新闻媒体和门户网站生成URL的方式 例如,您有一篇名为“男人爱女人”的文章,CMS软件将创建如下url: https://example.com/man-loves-woman/55123 其中55123是文章的真实ID,因此 https://example.com/man-does-not-love-woman/55123 只要真实id55123未更改,将返回相同的文章。不管可能的顺序是什么,它是%postname%/%id%还是%id%/%po
https://example.com/man-loves-woman/55123
其中55123
是文章的真实ID,因此
https://example.com/man-does-not-love-woman/55123
只要真实id55123
未更改,将返回相同的文章。不管可能的顺序是什么,它是%postname%/%id%
还是%id%/%postname%
现在我有一个自定义永久链接设置:
/%postname%/%year%%monthnum%%day%
我对此并不特别满意,我希望它/%postname%/%unique\u id%
在默认情况下生成%postname%
,但它的值是什么并不重要,因为%unique\u id%
是不可变的
我正在查看wp-includes/link-template.php
和rewrite.php
,但我对php不是很精通,但如果有人能给我指出正确的方向,我将不胜感激,我已经基本了解了这一切的工作原理,只要轻轻一推,我就可以跟进并自己解决它
也许我看错了,应该专注于背后的Nginx,设置一个重写规则,插入%postname%
,可以是任何内容,只需在WordPress permalinks设置中使用默认值,即可生成:
https://example.com/?p=123
如果您想在帖子名称后显示帖子的唯一id,可以通过添加此结构从WordPress Permalink设置中的
自定义结构中执行此操作
/%postname%/%post_id%
它在本地主机上不起作用,但在在线网站上起作用
你需要调查一下。添加以下代码functions.php
add_action( "init", "so_27051693_permalink" );
function so_27051693_permalink() {
//This rule will match : man-loves-woman/55123
add_rewrite_rule(
'^([^/]*)/([0-9]+)/?',
'index.php?p=$matches[2]',
'top' );
//This rule will match : 55123/man-loves-woman
add_rewrite_rule(
'^([0-9]+)/([^/]*)/?',
'index.php?p=$matches[1]',
'top' );
}
在这两种情况下,将使用post_id获取post。请确保通过重新保存永久链接来刷新重写规则。是的,我已经在使用自定义结构,但我希望确保“%postname%”的生成正确,但可以是任何内容,并且引擎使用“%post\u id%”作为获取相关文章的真正方式。您的答案是正确的。Anand提供的解决方案不起作用。实际上有点奇怪,它在add_操作函数的日志中抛出了一个未定义函数
错误。我应该提到我使用的是WP4.0,也许他们对一些东西进行了修改。无论如何,谢谢,解决办法非常简单阿南德,谢谢你的帮助,我回答并接受了下面的胡杰特。这对于旧版本的WP可能是必要的,但似乎有了%post_id%,我就得到了我想要的东西。无论如何谢谢你!