カスタム投稿の投稿画面で、タイトル変更できるデフォルトの状態だとslugを自分で入れないと日本語タイトルがURLになります。
重要なページは自分でURLを変えたいけど、それ以外は適当な数字にして!というときですね。
あと、タームの方も同じく日本語slugになってしまうのを回避するために、乱数でも良いので英数字にしたい場合。
投稿のslugに日本語入れない
投稿タイトルに英数以外が入っていたら投稿IDに置き換えます。
function auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ) {
$slug = utf8_uri_encode( $post_type ) . '-' . $post_ID;
}
return $slug;
}
add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4 );
タームのslugに日本語をいれない
タームは登録時点ではterm_idは取得できないので、苦し紛れに乱数に。
参考:ランダムな英数字の文字列を作成
http://qiita.com/TetsuTaka/items/bb020642e75458217b8a
function auto_term_slug( $slug, $term ) {
if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ) {
$slug = $term->taxonomy .'-'. makeRandStr(8);
}
return $slug;
}
add_filter( 'wp_unique_term_slug', 'auto_term_slug', 10, 4 );
// 乱数生成
function makeRandStr($length = 8) {
static $chars = '0123456789';
$str = '';
for ($i = 0; $i < $length; ++$i) {
$str .= $chars[mt_rand(0, 9)];
}
return $str;
}