web-dev-qa-db-ja.com

投稿を公開するときにパーマリンクにフックするにはどうすればいいですか?

Wordpressで自分の投稿を保存または公開する前に、パーマリンクの構造を希望のものに変更する方法を知りたいですか。
たとえば、私の投稿にthe wordpress blogのようなタイトルを追加すると、以下のようなパーマリンク構造が得られます。

http://localhost/2015/09/10/the-wordpress-blog/

保存または公開する前に、以下のように変更したいと思います。

http://localhost/2015/09/10/the-wordpress-blog-is-mine/

しかし、私は自分の目標を達成するために何をフックするのかわかりません。

2
FreeMind

最後に、私は自分で答えを見つけました。

//add our action
add_action( 'save_post', 'my_save_post', 11, 2 );

function my_save_post($post_id, $post){

   //if it is just a revision don't worry about it
   if (wp_is_post_revision($post_id))
      return false;

   //if the post is an auto-draft we don't want to do anything either
   if($post->post_status != 'auto-draft' ){

       // unhook this function so it doesn't loop infinitely
       remove_action('save_post', 'my_save_post' );

      //this is where it happens -- update the post and change the post_name/slug to the post_title
      wp_update_post(array('ID' => $post_id, 'post_name' => str_replace(' ', '-', $_POST['post_title'])));

      //re-hook this function
      add_action('save_post', 'my_save_post' );
   }
}
1
FreeMind

Titleフィールドの下には、slugフィールドがあります。通常WordPressは、Titleフィールドに入力した内容に基づいてスラッグベースを自動的に作成します。あなたがする必要があるのはあなたがそれになりたいものをタイプインしてそれから公開することです。

0
Cedon