パーマリンク設定で子カテゴリを非表示にする方法:WordPress
WordPressのパーマリンク設定で
/%category%/%postname%/
と、カテゴリ名をURLに指定している際に
子カテゴリ、孫カテゴリ名をURLに入れたくないと相談されたのでやり方をシェア。
通常であれば、
ドメイン.com/親カテゴリ/子カテゴリ/投稿名
と言うような表記になります。
これを
ドメイン.com/親カテゴリ/投稿名
にする方法です
やり方は、以下
管理画面のパーマリンク設定を変更
パーマリンク設定を変更します。
/%category%/%postname%/
functions.phpに追記
以下のコードをfunctions.phpに追記します。
//子カテゴリを非表示にするフィルタフック add_filter( 'post_link', 'remove_children_category_slug', 10, 3 ); function remove_children_category_slug( $permalink, $post, $leavename ){ //カテゴリのIDを取得 $cats = get_the_category( $post->ID ); if ( $cats ) { //ID順にソート usort( $cats, '_usort_terms_by_ID' ); foreach( $cats as $cat ) { //親カテゴリが存在するかチェック if ( $cat->parent ) { $parentcategory = explode(" ",get_category_parents( $cat, false, ' ', true )); //配列から最上位のカテゴリを取得 $parentcat = $parentcategory[0]; } else { //親がない場合はそのままスラッグを取得 $parentcat = $cat->slug; } } } //管理画面で設定したパーマリンクの設定に合わせる $permalink = home_url()."/".$parentcat."/".$post->post_name . '/'; return $permalink; }
これでURLに子カテゴリ、孫カテゴリが表記されなくなりました。
最新情報をお届けします