KH-WEBLOG TOP > WEBメモ > WordPress > パーマリンク設定で子カテゴリを非表示にする方法:WordPress

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

WordPressのパーマリンク設定で
/%category%/%postname%/
のように設定している場合で子カテゴリを設定している場合、
投稿ページのURLが
ドメイン.com/親カテゴリ/子カテゴリ/投稿名
のようになってしまい、かなり長くなってしまう場合があるので、
子カテゴリを取り除く方法をメモ。

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;
}

でOK
これで子カテゴリに属している投稿ページのURLが
ドメイン.com/親カテゴリ/投稿名
のようになります。

※管理画面のパーマリンク設定で
/%category%/%postname%/
以外の設定をしている場合、上記の方法だと404エラーになってしまうので注意

コーディング・WordPress化作業を代行します

WordPressのおすすめ参考書

\楽天ポイント5倍セール!/
楽天市場
楽天Kobo電子書籍ストア
¥3,278 (2024/04/19 19:05時点 | 楽天市場調べ)
\楽天ポイント5倍セール!/
楽天市場

TAGS

.htaccess ActionScript All in one seo pack Contact Form 7 CSS CSS3 EC-CUBE Flash HTML HTML5 JavaScript jQuery LightBox PHP RSS SEO WordPress アイキャッチ画像 アクセス解析 カスタムフィールド カテゴリー カラーミーショップ カート コメント ショートコード テンプレートタグ ドロップダウンメニュー パーマリンク フォーム フルスクリーン ブログカード プラグイン ページテンプレート ページナビ ページ分割 マウスイベント リダイレクト リンク リンクカード レンタルサーバー ロールオーバー 携帯サイト 条件分岐 正規表現 関連記事