パーマリンク設定で子カテゴリを非表示にする方法: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