質問: 0; $i < $length; $i++) { $r_str .= $str[rand(0, count($str))]; } return $r_str; } ```
回答: 2バイト文字がタイトルに含まれていないからでは? あと、パーマリンクではなくスラッグをランダムにするのでパーマリンク設定がデフォルトだと実際のURLは変わりません。 とりあえず投稿画面で公開した後のスタッグの文字列がどうなっているか確認したらいいでしょう。 追記 ちょっと考えてみました。 このコードだけでランダムなスラッグにします。 タイトルとスラッグが空でなければスラッグを埋めます。 スラッグの文字数はなんとなく8文字固定。 記事を公開後に更新した場合、スラッグに大文字があると小文字になるので大文字はあえて要らないのではないかと思いますが残してます。 問題があれば言ってください。 ``` function my_post( $data , $postarr ) { $str = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z"')); $r_str = null; for ($i = 0; $i < 8; $i++) { $r_str .= $str[rand(0, count($str))]; } if ( ! in_array( $data['post_status'], array( 'trash', 'auto-draft' ) ) && empty( $data['post_name'] ) ) { $data['post_status'] = 'publish'; $data['post_title'] = ''; $data['post_name'] = $r_str; } return $data; } add_action( 'wp_insert_post_data', 'my_post', 99, 2 ); ```