Php Wordpress永久链接,包括名称和ID,但只考虑ID

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

我有一个WordPress网站,我想模仿某些新闻媒体和门户网站生成URL的方式

例如,您有一篇名为“男人爱女人”的文章,CMS软件将创建如下url:

https://example.com/man-loves-woman/55123
其中
55123
是文章的真实ID,因此

https://example.com/man-does-not-love-woman/55123
只要真实id
55123
未更改,将返回相同的文章。不管可能的顺序是什么,它是
%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%,我就得到了我想要的东西。无论如何谢谢你!