サポート » 使い方全般 » 記事が属する複数のカテゴリー名(リンクなし)からIDで除外するには?

  • 解決済 ideadesign

    (@ideadesign)


    以下で表示されるカテゴリー名から特定のカテゴリ名を除外したいと考えています。
    excludeで特定のカテゴリーIDを除外すれば可能かと想像しますが、プログラムが専門外のため見当がつきません。よろしくお願いいたします。

    <?php
    $str = ”;
    foreach((get_the_category()) as $cat){
    $str .= $cat->cat_name . ‘・’;
    }
    echo rtrim($str, “・”);
    ?>

    [モデレーターより]
    「ドキュメンテーション」は日本語版 Codex に関する話題を投稿する場所です。
    本件は「使い方全般」に移動します

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • 普通にifで分ければいいかと。

    <?php
    $str = '';
    foreach(get_the_category() as $cat){
    if($cat->term_id!=="5"):
    $str .= $cat->cat_name . '・';
    endif;
    }
    echo rtrim($str, "・");

    個人的にはなんか文字列連結して最後の不要な記号だけ剥ぎ取って出力するやり方は苦手…

    トピック投稿者 ideadesign

    (@ideadesign)

    ご返信ありがとうございました。

    <?php
    $str = ”;
    foreach(get_the_category() as $cat){
    if($cat->term_id!==”14″):
    $str .= $cat->cat_name . ‘・’;
    endif;
    }
    echo rtrim($str, “・”);
    ?>

    以下のとおりやってみましたが、ID14のカテゴリー名も出力されてしまいます。。
    なぜでしょう。

    Cpdexの型情報が間違ってる可能性が微レ存…………

    if($cat->term_id!==14):

    にしてみてください。それか!=を使うか…………

    トピック投稿者 ideadesign

    (@ideadesign)

    消えました!流石です!助かりました!

    ありがとうございますm__m

    トピック投稿者 ideadesign

    (@ideadesign)

    すいません、こちらIDを複数指定したい場合はカンマ区切りで大丈夫でしょうか?

    この辺りはPHPの比較のやり方になるわけですが…………

    もちろんこのやり方では , で並べてもダメです。
    コスパ的にどうなのかわからないけど複数のカテゴリーを除外するならin_array使えば楽かな。

    <?php
    $str = '';
    $exclude=[3,15];//除外するカテゴリーIDを配列で
    foreach(get_the_category() as $cat){
    if(!in_array($cat->term_id,$exclude)):
    $str .= $cat->cat_name . '・';
    endif;
    }
    echo rtrim($str, "・");
    トピック投稿者 ideadesign

    (@ideadesign)

    すごい!できました!
    ありがとうございました!あなたは神様ですか!

    Hinaloeさん、日本語Codexのget_the_categoryを最近更新した者です。
    関数のソースを確かめたところ、ご指摘のとおり整数でした。他にも幾つか整数型が返されるフィールドがありました。( sanitize_term_field関数の中で整数型に強制しています。)

    本家Codexを見てstringって書いてるな~と思ってそれを元に書いてその後駄目だったと聞いてまさかと思って確認したらここにintって書かれてたんですよね…

    本家のミスですよね。修正しておくか…

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「記事が属する複数のカテゴリー名(リンクなし)からIDで除外するには?」には新たに返信することはできません。