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.oshiete-kun.net/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.