記事内に広告が含まれています。

%postname% のパーマリンク設定でいきなりパーマリンクが変わった

WordPressも設定画面でpostnameについて書かれている部分 wordpressでブログを作ろう
WordPressも設定画面でpostnameについて書かれている部分

 ある日、いきなりパーマリンクの表示が日本語設定に変わった。

 以前は、自分で編集をかけない限り【P-ID】の表示になっていた。

 困ったよー。

 こんな場合、どうしたらいいんだろう?

 こうならないためにどうするかという話。

広告

テーマを変更する時は注意がいる

 パーマリンクを【%postname% 】にしていた場合、本来、パーマリンク(ページのアドレス)は、「サイト名/投稿のタイトル」になる。

 それが、「サイト名/P-ID」になっていたということは、以前使っていたテーマで自動的に日本語のスラッグの場合に「サイト名/P-ID」になるようコードが付け加えられていた。

 ということだと思う。

 なのでそれまでは、日本語のパーマリンクではなく、「サイト名/P-ID」で自分で編集するようになっていたのだろう。

 テーマを変えたとたん、本来の【日本語タイトル】になってしまった。

 ということだろうと思う。

 パーマリンクを【%postname% 】にする場合、「日本語スラッグ」を「post-id」にするコードを事前にfunction.phpに書き加えるておくと、トラブルに合わずに済む。

 必要があれば、投稿時の編集ボタンでスラッグを書き換えれば、思い通りのページアドレスになる。

広告

パーマリンク【%postname% 】で日本語タイトルを【post-id】に変更するコード

 function.phpに下のコードを付け加える。

1.ダッシュボードの〔外観〕→〔テーマファイルエディター〕をクリニック。

2.function.phpに下のコードを付け加える。

/*
* スラッグ名が日本語だったら自動的にP-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 );

 上記のコード、自分で設定したスラッグの場合は、変更しないので安心して使ってほしい。

 投稿時の表示としては下の画面のようになる。

postnameのパーマリンクをコードでP+IDにした

postnameのパーマリンクをコードでP+IDにした

 ちなみに、このコードは下のサイトからお借りしたもの。

パーマリンク【%postname% 】にはご用心

 パーマリンクを【%postname% 】にするというのを推奨しているウェブサイトも多いのだが、【%postname% 】にするときは注意がいる。

 【%postname% 】でパーマリンクを設定するとページのアドレスは「サイト名/タイトル」という風になる。

 タイトル表示なのでわかりやすい。

 という意味で、WordPressも設定画面で「検索エンジンの上位表示に効果があるかもしれない」と言っている。

WordPressも設定画面でpostnameについて書かれている部分

WordPressも設定画面でpostnameについて書かれている部分

 が、デメリットもあって

 まず、一度公開するとタイトルを変えることができない。

 それだけでなく、SNSなどに表示されるアドレスが非常に長い、しかも意味不明な英語と%の羅列になってしまう。

 テーマを変えた時には、投稿記事は公開前に確認するようにしないと、意図しないアドレスになってしまうので気を付けよう。

 もし、「%postname% のパーマリンク設定でいきなりパーマリンクが変わった」という場合で元のパーマリンクが「サイト名/post-id/」以外の場合は、カスタム構造で元のパーマリンクのまま表示できることもある。

コメント

タイトルとURLをコピーしました