どもです。
WordPressでカテゴリアーカイブを表示するとき、URLは
「ドメイン名/category/カテゴリ名」。
この /category/を取りたい。消したい。
代表的な方法は、プラグイン。
WP No Category Base 。
これを入れれば一発解決。
しかし、何らかの理由からプラグイン以外の解決法が欲しいとき、
有名なのはFunctions.phpに以下のPHPを書くこと。
add_filter('user_trailingslashit', 'remcat_function');
function remcat_function($link) {
return str_replace("/category/", "/", $link);
}
add_action('init', 'remcat_flush_rules');
function remcat_flush_rules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_filter('generate_rewrite_rules', 'remcat_rewrite');
function remcat_rewrite($wp_rewrite) {
$new_rules = array('(.+)/page/(.+)/?' => 'index.php?category_name='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2));
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
しかしこれ、カスタム投稿と両立できない。
ので、カスタム投稿と両立できない原因を取り除く。
add_filter('user_trailingslashit', 'remcat_function');
function remcat_function($link) {
return str_replace("/category/", "/", $link);
}
一番上のブロックだけ残した。
すると…
見た感じ、普通に動いている。
大丈夫っぽい。
この技術が世に出たのは2013年くらい?なので、当時とWordPressの柔軟性も違うのかもしれない。
弊害があればまた書くとして、取り敢えずこれで行ってみようと思う。