WordPressのパーマリンクの設定を皆さんはどうされていますか?
postnameとか日付とかpostidとかにされている方が多いかと思いますが、
今回の要望は、パーマリンクを乱数にするとのことでした。
なぜパーマリンクに乱数が良いのか?
理由を聞いてみると、
postnameの場合
日本語のタイトルのままの人もいる。これは有名ですが、日本語タイトルの場合、その記事をリンクさせると、表示がものすごい英数字の羅列になります。
http://local.***.jp/posts/%e3%82%b4%e3%83%bc%e3%83%ab%e3%83%87%e3%83%b3%e3%82%a6%e3%82%a3%e3%83%bc%e3%82%af%e6%9c%9f%e9%96%93%e3%81%8a%e4%bc%91%e3%81%bf%e3%81%ae%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b-10/
もしくは、英字に変更したとしても、同じタイトルを間違って入力してしまうこともあり、その場合「***_-2」という表示になりイマイチ。
日付の場合
最近はリライトすることも多く、そうなると最初の投稿日の日付がパーマリンクになることに違和感が出る。
post-idの場合
上記理由の場合、これが一番スマートなんじゃ?と私的には思いましたが、こちらにもダメな理由がありました。
理由は、パーマリンク見ただけで記事数がバレる!
ということでした。記事数が少ないことをあまり知られたくないということでしょうか?
なるほど。。こういうところにも気にすることも大事なんですね。
WordPressのパーマリンクを乱数にする
上記理由から乱数を希望とのことでした。
まず、参考にされてもらったサイトはこちら。
ここの記事の「タームのslugに日本語をいれない」という箇所を参考にされてもらいました。
functions.phpに以下を記述します。
function auto_post_slug($slug, $post_ID, $post_status, $post_type) { if (get_post_type() != 'page') { $slug = makeRandStr(8); } return $slug; } add_filter('wp_unique_post_slug', 'auto_post_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; }
参考サイトでは、パーマリンクが英数字だった場合には乱数にはしないという条件文が入っていましたが、今回の案件ではタイトルに英数字が入っていることもありそうだったので、そこは削除し、
if (get_post_type() != 'page') {
}
この場合には、固定ページではない時。
という条件判断となります。
if (get_post_type() == 'work') {
}
としました。
それから、乱数ですが今回は数字のみ8桁となっています。一番簡単です。
管理画面でのパーマリンク設定
では、管理画面でのパーマリンク設定はどうすればいいのでしょうか?
管理画面の左メニューの設定ー>パーマリンク
でパーマリンクの設定をするかと思いますが、この場合最後の「カスタム構造」??
でも、その中にいれるタグは何にするのか??
答えは、
基本以外なら何でも良い
みたいです。
最初にこの要望を聞いた時に、設定は何にするのか?そこからわからないー!
と思ってのですが、パーマリンクをカスタマイズした時には基本以外を選択してあれば、何でも良いといことを知りました。ちょっとどこのサイトで知ったのか、わからなくなってしまったので、見つけたらリライトしますww
以上、Wordpressのパーマリンクをランダム(乱数)にする対応方法でした。
WordPressのカスタマイズを楽にするには、、
今回は、すでにサイトに公開してくださっている方のソースを元にカスタマイズしました。
このカスタマイズするにも、PHPの知識があるか、ないかでは大違いです。
私も以前はブログ上に公開されているコードをコピペすることしかできなかったのですが、
PHPを学んだら、カスタマイズが非常に楽にできるようになりました。
重要なのは、一から書けなくても見て何をしているのか、理解できればカスタマイズできる。といことです。
もし、Wordpressのカスタマイズをスムーズにしたい方がいれば、PHPやデータベースSQL等の勉強をすることをおすすめします。
コメント