サポート » 使い方全般 » 記事の無いカテゴリースラッグを正常に取得したい

  • 解決済 d-xanthus

    (@d-xanthus)


    WordPressにてカテゴリーごとに
    get_the_category()でカテゴリースラッグを取得して
    CSSで装飾を変えています。

    その際、記事の無いカテゴリーの場合、
    アーカイブページでは
    エラーメッセージ
    Notice: Undefined offset: 0 in/〜
    Notice: Trying to get property of non-object in /〜
    が表示され、カテゴリースラッグがうまく取得できません。

    何か代替の方法がありますでしょうか?
    何卒よろしくお願いいたします。

    【使用しているコード】
    if ( is_category() || is_single() )  {
                $cat = get_the_category();
                $slug = $cat[0]->category_nicename;
              }
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    get_the_category だと、記事が属する情報を取得しますので、記事がなければ取得が出来ませんし、複数のカテゴリーに属する場合は違うカテゴリー名を表示してしまう可能性があります。

    カテゴリーのアーカイブを表示している場合は、get_queried_object でカテゴリーの情報を取得できますので、こちらを利用いただくのがよいと思います。

    WordPress : get_queried_object()の返り値のまとめ

    トピック投稿者 d-xanthus

    (@d-xanthus)

    jim912様

    お世話になります。
    この度はご返信ありがとうございました。

    get_queried_objectを使って
    無事にカテゴリースラッグが取得できました。

    クライアントに納品する際は、
    記事が無い場合もありますので、助かります。
    ありがとうございました。

    【解決コード】
    if ( is_category() || is_single() )  {
                $cat = get_queried_object();
                $slug = $cat->category_nicename;
              }
    モデレーター jim912

    (@jim912)

    if の条件式に is_single() が含まれていますが、該当コードが記事詳細ページにも適用される場合、get_queried_object は、記事の情報となりますので、

    if ( is_category() ) {
      // カテゴリーの場合の処理
    } elseif( is_single() ) {
      // 記事詳細の場合の処理
    }

    と分けていただく必要があります。

    トピック投稿者 d-xanthus

    (@d-xanthus)

    jim912様

    気づかない点へのご指摘、ありがとうございます。
    早速修正してみます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「記事の無いカテゴリースラッグを正常に取得したい」には新たに返信することはできません。