自动删除Slug中的重复单词

时间:2015-07-27 作者:Aidielen

我正在寻找一种方法来删除wordpress slug中重复的单词。

比方说我的域名是\'的例子。com\'

我有一个名为“WordPress How To”的类别

我已将permalinks配置为“示例”。com/wordpress-how-to/\'

然后我想创建一篇标题为“如何在WordPress中创建子主题”的帖子

然后永久链接将自动生成此。。

\'示例。com/wordpress-how-to/how-to-create-a-child-theme-in-wordpress/\'

由于单词“wordpress,how,to”重复出现,我如何在插入标题时自动删除这些单词。

我希望永久链接将自动生成此。。。

\'示例。com/wordpress-how-to/create-a-child-theme-in/\'

实际上,只需单击编辑按钮即可轻松编辑永久链接。

但是否有任何功能。php代码使其自动生成?

1 个回复
SO网友:Webloper

根据你的例子

\'example.com/wordpress-how-to/how-to-create-a-child-theme-in-wordpress/\'

搜索=wordpress how to
主题=how-to-create-a-child-theme-in-wordpress/

此代码从搜索词中找到的主题中删除所有单词。

有关更多详细信息,请查看save\\u post中的“避免无限循环”

 function modified_slug( $post_id ) {

     // If this is a revision, get real post ID
     if ( $parent_id = wp_is_post_revision( $post_id ) )
         $post_id = $parent_id;

      // Get default category ID from options
      $defaultcat = get_option( \'default_category\' );

      // Check if this post is in default category
      if ( in_category( $defaultcat, $post_id ) ) {
         // unhook this function so it doesn\'t loop infinitely
         remove_action( \'save_post\', \'modified_slug\', 13, 2 );

         $post_url  =   get_permalink( $post_id );

         $filtered  =   array_filter( explode( \'/\', str_replace( home_url(), \'\', $post_url)));
         $search    =   explode(\'-\', array_shift(array_values($filtered)) );
         $subject   =   end($filtered);
         $new_slug      =   trim( str_replace( $search, \'\', $subject ), \'-\' );

         // Update post
         $my_post = array(
             \'ID\'               =>  $post_id,
             \'post_name\'    =>  $new_slug
         );

         // Update the post into the database
         wp_update_post( $my_post );

         // re-hook this function
         add_action( \'save_post\', \'modified_slug\', 13, 2 );
     }
 }
 add_action( \'save_post\', \'modified_slug\', 13, 2 );
  1. https://codex.wordpress.org/Plugin_API/Action_Reference/save_post
  2. https://codex.wordpress.org/Function_Reference/wp_is_post_revision
  3. https://codex.wordpress.org/Function_Reference/wp_update_post

结束

相关推荐

WP工作管理器更改工作URL(不是Slug)

我正在使用WP Job Manager plugin 在我的wordpress网站上。我的作业列表当前位于/jobs . 我想穿上它/careers . 所有作业的列表不是一个页面,因此我无法在那里更改url。我找到了this 主题,该主题显示了如何从/job/titlejob 到/careers/titlejob. 但这并不能说明我可以如何改变/jobs 到/careers.在示例中,他们正在这样做:function change_job_listing_slug( $args ) { $a