スラッグをランダムな文字列で生成し設定する。

電脳備忘録

WordPressは通常、記事タイトルがそのままスラッグとして設定されます。これだとURLに日本語が混ざってしまい、URLをコピペした際に、長ったらしい上に意味の分からないURLになってしまいます。
都度記事に対してSEOを考慮したスラッグを設定するわけでもないので、それならいっそのことランダムな文字列で設定すればいいじゃないという結論に至りました。

わたくしはポンコツですのでいつも通りGoogleさまに頼りました。

スラッグに自動で乱数を設定する

Wood-Roots:blog

こちらの方法はMD5を利用して32桁の文字列をそのままスラッグとして設定するというもの、32桁は長すぎる・・・。ということで別の方法を検索

PHPで文字列を短いハッシュ値に変える方法

JavaScript勉強会

こちらの方法はCRC32を利用して8桁の文字列を出力するというもの。パスワードなどセキュリティに使うのであれば慎重にならなければならないのでしょうけれど、今回は公開するスラッグとして利用するので、乱数のようなものを生成する方法としてこちらを採用しました。

以下、いつもの自分用備忘録。

add_action('transition_post_status', function($new_status, $old_status, $post){
if($new_status == 'publish' && $old_status != 'publish'){
$shortCRC32 = shortCRC32($post->ID);
$slug = $shortCRC32;
$newpost = array();
$newpost['post_name'] = $slug;
$newpost['ID'] = $post->ID;
wp_update_post($newpost);
}
}, 10, 3);
function shortCRC32 ($data) {
return strtr(rtrim(base64_encode(pack('H*', crc32($data))), '='), '+/', '-_');
};

上記の2サイトで紹介されていた方法を混まぜませしてfunction.phpに追記しましたが、「ntkdjha.html」といた具合に8桁のランダムな文字列を生成することに成功しました。
URLも有効で404に飛ばされることもなかったのでこれで良しとします。あ、パーマリンクをカスタム構造にするのをお忘れなく。

広告

ブログの維持費に充てるでございます・・・。