是否将WordPress%postname%后缀替换为%postid%?

时间:2016-04-04 作者:Laurent Ho

我经营一家新闻网站,我一直在想Wordpress permalink的一个问题。现在,Wordpress将添加一个增量数字后缀来复制%postname%,而不管目录结构如何。

例如,无论结构是否为domain.com/2016/04/03/news-titledomain.com/category/news-title-%post_id% 当它检测到重复时。

我最初认为Wordpress不会在永久链接末尾添加%post id%后自动添加后缀,但事实并非如此。

我试图实现的目标(没有Wordpress干预%postname%)如下:

域。com/2016/04/03/news-title-44956(假设后面的数字是%post\\u id)

  • 域。com/2017/05/06/news-title-55957或

    域。com/2016/04/03/44956/news title域名。com/2017/05/06/55957/news title

  • /ul>我讨厌一年后(或多年后)我无法将同一标题用于不同内容的想法,即使permalink目录到那时已经大不相同了。

    有没有什么方法可以添加钩子或临时修改Wordpress核心来修复此问题,或者至少让Wordpress在检测到重复的永久链接时自动附加%post id%,而不是增量数字?

    1 个回复
    SO网友:kovshenin

    我想你可以过滤wp_unique_post_slug 并让它返回帖子的原始slug,但我不确定这可能会有什么副作用:

    add_filter( \'wp_unique_post_slug\', function( $slug, $post_id, $post_status, $post_type, $post_parent, $original_slug ) {
        if ( $post_type == \'post\' )
            $slug = $original_slug;
    
        return $slug;
    }, 10, 6 );
    
    下面是如何附加post ID而不是-2:

    add_filter( \'wp_unique_post_slug\', function( $slug, $post_id, $post_status, $post_type, $post_parent, $original_slug ) {
        if ( $post_type == \'post\' && $slug != $original_slug )
            $slug = preg_replace( \'#\\-[0-9]+$#\', \'-\' . $post_id, $slug );
    
        return $slug;
    }, 10, 6 );
    

    相关推荐

    Slug for custom post type

    我在我的网站上使用网页和博客帖子。页面获取URL示例。org/%postname%/,并基于Permalink设置,posts获取URL示例。组织/博客/%postname%/。完美的我有一个自定义的帖子类型,由我网站上的另一个组用于他们的网页。在注册post类型时,我为它们提供了一个重写slug:\'rewrite\' => array(\'slug\' => \'ncfpw\'),然而,他们的页面得到了URL示例。组织/博客/ncfpw/%博文名%/我怎样才能摆脱;博客;在他们的URL中?