ど素人から毛を生やす。<延>

新?パーマリンクからタクソノミーを消す方法

Web > WordPress > カスタム投稿 2014年6月25日(最終更新:10年以上前)

2014年6月25日に作成されたページです。
情報が古かったり、僕が今以上のど素人だった頃の記事だったりする可能性があります。

どもです。
肌荒れが酷い餅。です。

特に顔、それも目の周りがぼろぼろ感。
夏のせいか、不健康なインドア生活のせいか……

それはともかくWordPress。

僕にとって、長らくの課題のひとつが、カスタム投稿を導入したときのパーマリンクを

/post_type/taxonomy/term

から、

/post_type/term

にすることでした。

 

有名なやり方としましては、こちらのサイト様の、
Custom Post Type Permalinksプラグインでチェックを入れた上で


//カスタム投稿パーマリンク「/taxonomy/」削除
function my_custom_post_type_permalinks_set($termlink, $term, $taxonomy){
	return str_replace('/'.$taxonomy.'/', '/', $termlink);
}
add_filter('term_link', 'my_custom_post_type_permalinks_set',11,3);

がありますが、functionに突っ込んでみても何故か上手くいきません。
管理画面や関数が吐き出すリンクは変更されますが、肝心のURLが変更されず、
404エラーになってしまいます。

また、functions.phpでカスタム投稿を設定する際に、


register_taxonomy(
	'タクソノミー名',
	'基づくカスタム投稿タイプ名',
	array(
		'hierarchical' => true,
		'label' => 'カテゴリー',
		'show_ui' => true,
		'query_var' => true,
		'rewrite' => array('slug' => '基づくカスタム投稿タイプ名'),
		'singular_label' => 'カテゴリー'
		)

とすると、一見上手くいくのですが、ページ送りに対応できませんでした。

 

この問題が漸く解決できたっぽいので、解決法を晒しておきます。

まず、タクソノミーを宣言するときですが、
'hierarchical' => true, と、
'rewrite' => array('slug' => 'カスタム投稿タイプ名'),
を記載しておきます。

それに加えて、以下をfunctions内に記載します。


//add_rewrite_rule('カスタム投稿タイプ名/([^/]+)/?$', 'index.php?タクソノミー名=$matches[1]', 'top'); 9/10追記:この記述はパーマリンクの設定によってはエラーの原因になるみたいなので、やっぱり下のだけでおk
add_rewrite_rule('カスタム投稿タイプ名/([^/]+)/page/([0-9]+)/?$', 'index.php?タクソノミー名=$matches[1]&paged=$matches[2]', 'top');

リライトルールという、「このURLが指定されたら、このパラメータの値を返せよ」って
感じの設定です。
上が1ページめ(こっちは要らないかも)、
下が2ページめ以降のURLを指定します。

リライトルールについては、こちらのサイト様か、こちらのPDFが詳しく解りやすく教えてくださいます。

 

これで長きに渡る悩みも解決!
したと思ったら実はしてなかった、なんてことにならなきゃ良いなぁ(笑)

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (2)
  • (・∀・) 参考になった (2)
  • (`・ω・´) 役に立った (3)