起きていること
WordPressを利用してブログを作成しており、カテゴリーとタグの記事一覧のURLから、それぞれ「/category」「/tag」を消したいと考えています。
ファイル名 | 役割 | URL |
---|---|---|
archive.php | カテゴリーの記事一覧 | /category/hoge → /hoge |
tag.php | タグの記事一覧 | /tag/hogehoge → /hogehoge |
以下の①-②のコードを試したのですが、正しく「/tag/」を消すことができませんでした。
【①の場合】
「/tag/hogehoge」のURLがindex.php?tag=$matches[1]
に合致して読み込まれていたため、ここへリライトルールの設定を試しました。
結果は「/tag/hogehoge」からURLが変わりませんでした。
【②の場合】
「/tag/hogehoge → /hogehoge」にURLは変わりますが、categoryページの一種だと認識されるようになりうまくいきませんでした。
(/category/hoge → /hoge への変更は同コードで機能します。)
tag.php関連の情報が少ないため同様の事例を他に見つけることができず、解決策が分かっていません。
原因及び解決策についてどなたかご教示いただけないでしょうか?
試したコード
①
php
1<!-- functions.php --> 2 3function add_my_test_rewrite_rule() { 4 add_rewrite_rule( 5 '^/([^/]+)/?', 6 'index.php?tag=$matches[1]', 7 'top' 8 ); 9} 10add_action( 'init', 'add_my_test_rewrite_rule' );
②
php
1<!-- functions.php --> 2 3function remtag_function($link) { 4return str_replace("/tag/", "/", $link); 5} 6add_filter('user_trailingslashit', 'remtag_function'); 7function remtag_flush_rules() { 8global $wp_rewrite; 9$wp_rewrite->flush_rules(); 10} 11add_action('init', 'remtag_flush_rules'); 12function remtag_rewrite($wp_rewrite) { 13$new_rules = array('(.+)/page/(.+)/?' => 'index.php?tag='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2)); 14$wp_rewrite->rules = $new_rules + $wp_rewrite->rules; 15} 16add_filter('generate_rewrite_rules', 'remtag_rewrite');
あなたの回答
tips
プレビュー