パーマリンクのカスタマイズ
ワードプレスのパーマリンク設定は色々カスタマイズできますが、おおまかな設定のみで物足りないところもあります。今回やりたかったことは個別投稿ページのURLをhoge.com/blog/投稿名/というカタチ。これを実現するにはカスタムパーマリンクの設定とリライトルールの追加が必要となります。
目 次
カスタムパーマリンクの設定
まず、投稿タイプが「post」の場合に、URLを/blog/投稿名/という形式に変更する方法を見ていきましょう。以下のコードをテーマのfunctions.phpファイルに追加します。
function custom_post_permalink($permalink, $post, $leavename) {
if ($post->post_type == 'post') {
$permalink = home_url('/blog/' . $post->post_name . '/');
}
return $permalink;
}
add_filter('post_link', 'custom_post_permalink', 10, 3);
このコードでは、post_link
フィルターを使用して、投稿のパーマリンクをカスタマイズしています。具体的には、投稿タイプが「post」の場合、パーマリンクを「/blog/投稿名/」という形式に変更しています。
コードの詳細
custom_post_permalink関数
$permalink
:元のパーマリンク。$post
:投稿オブジェクト。$leavename
:投稿名をそのまま使用するかどうか。- 条件分岐で投稿タイプが「post」の場合、パーマリンクを
home_url('/blog/' . $post->post_name . '/')
に変更。
add_filter(‘post_link’, ‘custom_post_permalink’, 10, 3)
post_link
フィルターを使って、custom_post_permalink
関数を呼び出し、パーマリンクをカスタマイズ。
リライトルールの追加
次に、カスタムパーマリンクに対応するリライトルールを追加します。以下のコードを同じくfunctions.phpファイルに追加します。
function custom_rewrite_rules() {
add_rewrite_rule(
'^blog/([^/]+)/?$',
'index.php?name=$matches[1]',
'top'
);
}
add_action('init', 'custom_rewrite_rules');
このコードでは、init
アクションフックを使って、カスタムリライトルールを追加しています。リライトルールにより、/blog/投稿名/形式のURLをWordPressが正しく解釈し、対応する投稿ページを表示できるようにします。
コードの詳細
custom_rewrite_rules関数
add_rewrite_rule
:新しいリライトルールを追加するための関数。'top'
:新しいルールをリライトルールの先頭に追加。'^blog/([^/]+)/?$'
:URLのパターン。「blog」ディレクトリの直下に投稿名が続く形式。'index.php?name=$matches[1]'
:URLパターンにマッチした場合の内部クエリ。$matches[1]
は、正規表現のキャプチャグループ。
最後に
上記のコードを使用することで、WordPressの投稿のパーマリンクを「/blog/投稿名/」形式にカスタマイズし、そのパーマリンクに対応するリライトルールを追加することができます。この設定により、SEOに強く、ユーザーにもわかりやすいURL構造を実現できます。
パーマリンクのカスタマイズやリライトルールの設定は、サイトの構造や目的に応じて柔軟に変更できます。ぜひ、自分のサイトに合った設定を試してみてください。