フォーラムへの返信

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 NAOKING

    (@naoking)

    mocomocoさま
    ありがとうございます!イメージ通りのことができました。
    とても助かりました。

    ご報告と同じお悩みの方へのご参考までに、少し手を加えたものを載せておきます。

    function add_author_to_postname( $data, $postarr ) {
      if ( ! in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
        $author_name = get_the_author_meta('user_nicename',$data['post_author']);
    	global $post;
    	$courseslug = get_post_meta( $post->ID,'customslug',true );
        $data['post_name'] = sanitize_title( $author_name.'-'.$customslug );
      }
    
      return $data;
    }
    add_filter( 'wp_insert_post_data', 'add_author_to_postname', 99, 2 );

    私はpostnameがどうしても日本語になってしまうので、別途カスタムフィールド「customslug」を作って使うようにしました。
    最初うまくいきませんでしたが、function.phpの中でカスタムフィールをの値を呼び出すために「global $post;」を追加することで解決できました。
    ただ、このやり方だと、「$post->ID」の部分で先にpostIDができていないとカスタムフィールドを参照しないため、初回投稿時にはauthor_nameのみで格納、同記事を一度更新すると「author_name-cutomslug」で格納されるという感じになります。
    あまりスマートではないですがこれは仕方ないですね。。

    改めまして、本当にありがとうございました。

1件の返信を表示中 - 1 - 1件目 (全1件中)