今回自身のサイトを制作する際に「制作実績」をブログ機能を使って制作しようと思ったんだけど
イメージとしては一覧表示する際に下記のようにしたい
/works/web
でも実際は
/category/works/web
となってしまう・・・SEO的には問題ないんだろうけど、なんか納得いかない・・
という事で色々調べて解決したのでメモっておく
function.phpを設定
function.phpへ下記コードを追加
// カテゴリー部分をURLから削除するためのフィルター関数
function remcat_function($link) {
return str_replace("/category/", "/", $link);
}
// フィルターを登録して、リライトルールを更新する
add_filter('user_trailingslashit', 'remcat_function');
// リライトルールを更新するための関数
function remcat_flush_rules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
// ページ番号を含むURLを処理するリライトルールを追加する関数
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('generate_rewrite_rules', 'remcat_rewrite');
パーマリンクは下記で設定
/%category%/%post_id%/
無事に理想通りのURLになりました!
他にも
- プラグインの「WP No Category Base」を使う方法
- パーマリンクのカテゴリーベースに【 . 】を入れる方法
などあったけど、一番スマートな方法がfunction.phpにコードを追加する方法でした。

