首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将post id添加到url,而不是WordPress默认-2后缀。

将post id添加到url,而不是WordPress默认-2后缀。
EN

WordPress Development用户
提问于 2023-04-26 17:49:33
回答 1查看 40关注 0票数 0

我有一个网站,在自定义邮政类型的帖子将有相同的标题。默认情况下,WordPress将在url之后添加一个数字来处理这个问题,但是我希望始终包含post id,这将使url唯一。我该怎么做?

WordPress默认值: /post-type/title-2我想要: /post-type/post_id/title

EN

回答 1

WordPress Development用户

发布于 2023-04-27 15:08:09

首先,转到定义自定义post类型的地方。例如,如果我编写一个函数来定义自定义的post类型“book”,我将使用register_post_type( 'books', $args ),其中$args是一个用于配置post类型属性的数组。默认情况下,自定义post类型使用post类型键作为它们的段塞。为了定义自定义弹格,我们需要使用那个rewrite数组的$args键。在图书示例中,使用您在问题中指定的URL方案,它可能如下所示:

代码语言:javascript
复制
  $args = array();
  $args['rewrite'] = array(
    'slug' => 'books/%post_id%'
  );

您可能会在rewrite数组中指定$args以外的其他参数。如果您碰巧需要更多关于它们的背景信息,请参阅寄存器_帖子_类型

如果我们在此停止,%post_id%重写标记将显示在此post类型的所有帖子的URL中。我们想用邮政的实际身份来代替它。要做到这一点,我们连接到post_type_link过滤器。

代码语言:javascript
复制
function wpse415642_rewrite_links( $post_link, $post_obj ){
  if ( 'books' == $post_obj->post_type ){
    $post_link = str_replace('%post_id%', $post_obj->ID, $post_link);
  }
  return $post_link;
}

add_filter( 'post_type_link', 'wpse415642_rewrite_links', 10, 2 );

对于一些自定义的url段塞,您必须在这里进一步注册,并将其注册为查询变量,这样WordPress就可以正确匹配URL路径。幸运的是,在默认情况下,%post_id%是一个注册的重写标记,因此我们不必这样做。但是,您应该确保在permalink设置中刷新permalinks,以便新的url方案生效。

WordPress负责产生独特的后鼻塞的部分不知道我们的新URL,所以我们必须手动告诉它不要添加"-2“风格的后缀。否则,为了继续使用图书示例,我们将有:

  • books/1234/count-of-monte-cristo
  • books/2345/count-of-monte-cristo-2

两根柱子上的子弹都叫“基督山伯爵”。为了防止独特的弹状体生成,我们将其连接到pre_wp_unique_post_slug 过滤器并返回一个非空值。

代码语言:javascript
复制
function wpse415642_prevent_unique_slug( $generate_unique_slug, $slug, $id, $post_status, $post_type ){
  if ( 'books' == $post_type ){
    return $slug;
  }
  return $generate_unique_slug;
}

add_filter('pre_wp_unique_post_slug', 'wpse415642_prevent_unique_slug', 10, 5 );

这将给你唯一的网址,没有任何后缀的帖子标题。

票数 2
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/415642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档