将%post_id%添加到自定义POST类型的slug,并防止WP所做的“唯一slug”?

时间:2019-01-31 作者:Malachi Draven

我有一个称为“设备”的自定义帖子类型。我希望permalink结构为:

example.com/equipment/%post_id%-slug
我特别希望它使用破折号而不是斜杠(即-“id slug”而不是“id/slug”)。我在google上找到的每一个可能的解决方案都使用了斜杠,我就是不能用破折号。

如果有两篇文章标题相同,我还想阻止WordPress添加额外的数字。示例:

example.com/equipment/45-awesomeness
and
example.com/equipment/46-awesomeness-2
我认为解决方法是使用add\\u rewrite\\u规则,但我对regex的东西有点困惑。

以下代码确实可以用slug中的id替换帖子名:

function equipment_links($post_link, $post = 0) {
    if($post->post_type === \'equipment\') {
        return home_url(\'equipment/\' . $post->ID . \'\');
    }
    else{
        return $post_link;
    }
}
add_filter(\'post_type_link\', \'equipment_links\', 1, 3);


function equipment_rewrites_init(){
    add_rewrite_rule(\'equipment/([0-9]+)?$\', \'index.php?post_type=equipment&p=$matches[1]\', \'top\');
}
add_action(\'init\', \'equipment_rewrites_init\');
它确实返回了一个url“example.com/equipment/123”,但我想在“123”的末尾加上“-post\\u name”。

1 个回复
SO网友:Jared Rice

我对编码重写没有太多经验,但你能补充一下吗$post->post_name 在你的回报声明中?

return home_url(\'equipment/\' . $post->ID . \'-\' . $post->post_name );

还有一些其他方法可以更改我使用的永久链接,这些方法也可能对您有所帮助:

更改永久链接结构的最简单方法可能是通过进入“管理”菜单“设置”>“永久链接”使用自定义结构。选择自定义结构并将其设置为/%post_id%-%postname%/ 关于唯一标识符,您希望在末尾删除。。我没有这个答案。但是,如果您愿意使用。htacess rewrite而不是php,您可以尝试一下:

https://stackoverflow.com/questions/14635438/remove-trailing-number-from-url-via-htaccess

相关推荐

如果我对页面使用静态页面-slug.php,数据库是否仍被查询?

我想知道如何显示静态页面以稍微增加页面负载:第一个选项是将内容放入数据库(通过管理GUI),第二个选项是创建page-slug.php 不调用内部的循环page-slug.php. 如果仍在查询数据库,则后一个选项将无效,这将导致我的问题在页面加载方面使用page-slug.php 对于静态页面,而不是将内容放入数据库</如果我使用page-slug.php (使用循环)以检查此页面是否有任何内容