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

时间:2016-10-21 15:12:29

标签: wordpress url-rewriting slug

我有一个带有自定义类型(地点)的WordPress安装,它会产生这种永久链接结构:

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

我想展示我的所有网站:

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

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

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

地方/造访的先站点和享受-1985 /

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

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

任何想法??

3 个答案:

答案 0 :(得分:0)

必须编辑 数据库 中的任何内容, 任何代码在你的WordPress安装中;您可以直接通过 WordPress管理面板实现

信息中心中,点击设置下的永久链接子菜单; there,您必须选择自定义结构选项并将其设置如下,以达到您想要的效果:

  

<强> /places/visit-%postname%-and-enjoy-%year%/

请注意:在这里,我们使用 %postname% %year% Structure Tags来获取帖子的名称及其相应的出版年份。

不要忘记点击页面上的保存更改按钮以实现更改。

...详细了解Permaklinks(一般知识)。

对于评论中进一步表达的自定义帖子类型和分类,您需要一个自定义解决方案,根据您的能力,需要进行一些编码和/或调整;您可以使用Custom Post Type Permalinks中的此便捷插件(WordPress.org Plugins repository)。

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

答案 1 :(得分:0)

你有像save_post或pending_to_publish这样的差异钩子,你可以在其中设置或更改“post_name”(这对应于永久链接slug)。

答案 2 :(得分:0)

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

  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); 

将此代码放入自定义帖子类型插件中。如果找不到页面错误,请更改固定链接设置。或制作自定义模板文件以显示此帖子。