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」で格納されるという感じになります。
あまりスマートではないですがこれは仕方ないですね。。
改めまして、本当にありがとうございました。