【问题标题】:Add specific words to WordPress custom type slug将特定单词添加到 WordPress 自定义类型 slug
【发布时间】:2017-03-03 23:18:52
【问题描述】:

我有一个带有自定义类型(位置)的 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/

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

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

有什么想法吗??

【问题讨论】:

  • 将每个帖子的永久链接更改为您喜欢的内容

标签: wordpress url-rewriting slug


【解决方案1】:

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

在您的仪表板中,点击设置下的固定链接子菜单; there,您必须选择 Custom Structure 选项并将其设置如下以达到您想要的效果:

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

请注意:这里,我们同时使用了 %postname%%year% Structure Tags 以获取帖子名称及其对应的出版年份。

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

...阅读Permaklinks 的更多信息(用于一般知识)。

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

如果您选择编码,这个posts 应该同样对您有很大帮助,帮助您入门和进一步理解。

【讨论】:

  • 我知道,但如果我这样做,它会改变所有网站的 slug,我只想为自定义类型的帖子这样做。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    要将特定单词添加到 WordPress 自定义类型 slug 您必须注册自定义重写规则。 假设这是您的 URL 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); 
    

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

    【讨论】:

      猜你喜欢
      • 2018-06-29
      • 2019-09-12
      • 2018-07-15
      • 2013-08-04
      • 2013-12-11
      • 2019-06-09
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      相关资源
      最近更新 更多