WordPressでURL用の記事名を付け忘れたときに長い名前にならないようにしたい

functions.phpにフィルタ処理を書き加えれば、記事IDなどシンプルな名前に変えられる。

定番ブログエンジンの「WordPress」では、「パーマリンク」の設定で記事のURLの形式をカスタマイズできる。URLには、記事IDや投稿日時などの他に、記事ごとに設定した「スラグ」と呼ばれるURL用の名前を使うことも可能だ。URLに記事の內容に関係する語句を含めれば、検索エンジンで見つけてもらいやすくなるSEO効果が期待できる。
このスラグ名は、初期狀態では記事のタイトルから自動生成されるのだが、タイトルが日本語の場合はURLエンコードされると非常に長いURLになってしまうのが困りものだ。
なるべく手動で設定するようにしたいところだが、スラグの設定欄は「下書きとして保存」を実行しないと表示されないため、忘れたまま記事を公開するというミスを犯しがちだ。後から変更することも可能ではあるが、SNSへの自動投稿などが行われた後だと、変更前のURLを見た人が記事に辿り著けなくなってしまう恐れがある。
萬が一スラグ名を設定し忘れても長いURLにならないようにしたければ、テーマディレクトリの「functions.php」にフィルタ処理を追加しよう。自動生成されるスラグは、「wp_unique_post_slug」というフィルタフックで上書きできるぞ。


001

記事URLにスラグを使うように設定している場合、記事を保存するとタイトル欄の下のパーマリンク欄に記事タイトルから生成されたURLが表示される。「編集」を押せば入力欄が現れて変更可能だが、新規記事作成畫面を開いた直後はパーマリンク欄自體が表示されないので、変更し忘れたまま公開してしまいがちだ。
日本語のタイトルがそのままスラグになっていると、URLで使える記號のみの形式にエンコードした時に「http://www.numerosign.com/archives/2016/04/wordpress%E3%81%A7url%E7%94%A8%E3%81%AE%E8%A8%98%E4%BA%8B%E5%90%8D%E3%82%92%E4%BB%98%E3%81%91%E5%BF%98%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E9%95%B7%E3%81%84%E5%90%8D%E5%89%8D%E3%81%AB.html」のような長くて不格好なURLになってしまう。


function my_post_slug($slug,$pid,$stat,$type){
	if(!preg_match( '@^[\\w\\-]+$@sui',$slug)){
		return('post-'.$pid);
	}else{
		return($slug);
	}
}
add_filter('wp_unique_post_slug','my_post_slug',11,4);

自動生成されるスラグに日本語のタイトルが使われないようにしたい場合、テーマファイルのディレクトリにある「functions.php」にこのようなコードを追加しよう。
スラグの自動生成時に呼び出されるフィルタ関數を登録して、スラグに英數字や記號以外が含まれていれば記事IDからなる簡潔なスラグに置き換えるという処理になっている。


002

この設定により、初期狀態で自動生成されるスラグが簡潔なものになり、設定し忘れて長いURLのまま公開してしまうことが無くなるぞ。

2016年04月06日 22時08分
©教えて君.net All Rights Reserved.
汤姆高清影院