パーマリンク設定で子カテゴリを非表示にする方法:WordPress


20150921 01

WordPressのパーマリンク設定で

/%category%/%postname%/

と、カテゴリ名をURLに指定している際に
子カテゴリ、孫カテゴリ名をURLに入れたくないと相談されたのでやり方をシェア。

通常であれば、

ドメイン.com/親カテゴリ/子カテゴリ/投稿名

と言うような表記になります。

これを

ドメイン.com/親カテゴリ/投稿名

にする方法です

やり方は、以下

IT/WEB業界への転職なら求人サイトGreen

管理画面のパーマリンク設定を変更

パーマリンク設定を変更します。

/%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に子カテゴリ、孫カテゴリが表記されなくなりました。

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

follow us in feedly