将特定词添加到 WordPress 自定义类型 slug

Add specific words to WordPress custom type slug

我有一个带有自定义类型(位置)的 WordPress 安装,它会生成此永久链接结构:

http://example.com/places/the-first-site/

我想像这样显示我的所有网站:

http://example.com/places/visit-the-first-site-and-enjoy/

其中 'visit' 和 'and-enjoy' 总是那些特定的词(常量)。

更好的是,我想将我拥有的自定义分类法(年份)作为元数据

places/visit-the-first-site-and-enjoy-1985/

我可以访问数据库并修改所有 post 的 post 名称,但我也必须为新的 post 做,我正在寻找一些自动规则,但找不到如何做。

也许重写一些规则,但我不知道该怎么做。

有什么想法吗??

不必编辑数据库中的任何内容也没有任何代码在您的WordPress安装中;您可以直接从 WordPress 管理面板. 实现

从您的仪表板,点击设置下的永久链接子菜单; there,您必须 select 自定义结构 选项并将其设置如下以达到您想要的效果:

/places/visit-%postname%-and-enjoy-%year%/

请注意:这里我们同时使用了%postname%%year% Structure Tags 以便分别得到 post 的名称及其对应的出版年份。

不要忘记单击页面上的 保存更改 按钮以使您的更改生效。

...阅读更多关于Permaklinks的内容(一般知识)。

对于 自定义 post 类型和分类法 如评论中进一步表达的那样,您将需要一个自定义解决方案,这将需要一点点编码和/或调整,取决于你的能力;你可以使用这个方便的插件 (Custom Post Type Permalinks) from the WordPress.org Plugins repository.

这个posts应该同样对你有很大的帮助,如果你选择编码,开始和进一步理解。

您有不同的挂钩,例如 save_post 或 pending_to_publish,您可以在其中设置或更改 "post_name"(对应于永久链接别名)。

要将特定词添加到 WordPress 自定义类型 slug,您必须注册自定义重写规则。 假设这是你的 URL http://example.com/places/the-first-site ! 你有一个 post 类型的地方。

  function add_rewrite_rules()
 {
 $wp_rewrite->add_rewrite_tag('%places%', '([^/]+)', 'places=');
    $wp_rewrite->add_rewrite_tag('%state%', '([^/]+)', 'state=');

$wp_rewrite->add_permastruct('places', 'places/visit-%state%-and-enjoy/', false);
 }
  function permalinks($permalink, $post, $leavename)
  {
   $no_data = 'no-data';
   $post_id = $post->ID;
 if($post->post_type != 'story' || empty($permalink) || in_array($post->post_status, array('draft', 'pending', 'auto-draft')))
  return $permalink;
   $state = get_post_meta($post_id, 'location', true);
 if(!$state)

    $state = $no_data;

      $permalink = str_replace('%state%', $state, $permalink);
     return $permalink;
   } 
   add_action('init', 'add_rewrite_rules');
   add_filter('post_type_link', 'permalinks', 10, 3); 

将此代码放入您的自定义 post 类型插件中。如果找不到页面错误,请更改您的永久链接设置。或者制作一个自定义模板文件来显示这个 post。