カスタム投稿の、パーマリンクの基本とカスタマイズ【WordPress】
カスタム投稿を追加したときに、
タクソノミー一覧ページなどのパーマリンクってなんだっけ?
となることがあります。
あとできれば、パーマリンクをキレイに整理できたらな~とも。
毎回毎回忘れて調べていたので、ここにメモ。
目次
カスタム投稿のパーマリンクの基本
まず前提として、カスタム投稿を以下のように追加しているとします。
- カスタム投稿タイプ products
- カスタムタクソノミー products-cat
- ターム sell, rental
そうすると、デフォルトでは以下のようなパーマリンクになっています。
カスタム投稿タイプの記事一覧ページ
▼ archive-products.phpなど
サイトURL/products/
サイトURLの後ろにカスタム投稿名が入ります。
タームの記事一覧ページ
▼ taxonomy.phpなど
サイトURL/products-cat/sell/
サイトURLの後ろにカスタムタクソノミー名が入り、その後ろにターム名が入ります。
記事詳細ページ
▼ single-products.phpなど
サイトURL/products/記事スラッグ/
サイトURLの後ろにカスタム投稿名が入り、その後ろに投稿時に設定した記事スラッグが入ります。
カスタム投稿のパーマリンクを整理する方法
ここからはパーマリンクを整理する方法。
個人的には、以下のようになるのが理想なんです。
- カスタム投稿一覧ページ → サイトURL/products/
- タームの記事一覧ページ → サイトURL/products/category/sell/
- 記事詳細ページ → サイトURL/products/記事スラッグ/
つまり、タームの記事一覧ページのパーマリンクを変えたいということです!
タームの記事一覧ページのパーマリンクを変更する
▼ functions.php
//タクソノミーを作成
register_taxonomy(
'products-cat',
'products',
array(
'label' => '製品カテゴリー',
'labels' => array(
'add_new_item' => '新規カテゴリーを追加',
),
'public' => true,
'hierarchical' => true,
'rewrite' => array(
'slug' => 'products/category', //ここを希望のスラッグに変更
'hierarchical' => true //階層化したURLを使用可能にする
)
)
);
まずは、タクソノミーを作成する記述(= register_taxonomy )のところの’rewrite’を設定します。
‘slug’を希望のスラッグに変更します。
次に404エラーの対策をしていきます。
▼ functions.php
// 書き換えたスラッグに対応したリライトルールを追加
add_rewrite_rule('products/category/([^/]+)/?$', 'index.php?products-cat=$matches[1]', 'top');
//リダイレクト処理
add_action( 'template_redirect', 'my_redirect' );
function my_redirect() {
$url_now = $_SERVER['REQUEST_URI'];
if($url_now == "/products/category/"){ //リダイレクトさせたいurl
$url = home_url('/products/', 'http'); //リダイレクト先のurl
wp_safe_redirect( $url, 301 );
exit();
}
}
「旧パーマリンク」から「新パーマリンク」への書き換えを2行目で、
「サイトURL/products/category/」から「サイトURL/products/」へのリダイレクトを5行目以降で行っています。
おわりに
その他、もっともーーーっと細かくパーマリンクをカスタマイズしたい方はこちら。
今回参考にさせていただいたサイトです。
参考:カスタムタクソノミーのパーマリンクをいい感じにしたい|Libreco
WordPressの勉強するならこの一冊
私自身、この1冊から始めて今でもずっと見返す一冊です。