サポート » 使い方全般 » カスタムフィールドから、表示カテゴリを操作

  • 解決済 taro33

    (@taro33)


    調べてみたのですが、答えが見つからなかったのでここで質問させて頂きます。

    【質問】
    複数の固定ページに、それぞれ任意のカテゴリー一覧を表示させたいと思っています。
    どのカテゴリーを取得するかは、固定ページ内のカスタムフィールドで操作したいと思い
    以下のコードを書いてみましたが、記事は表示されるものの、どうもカテゴリ絞り込みをしてくれません。

    <!– / –>
    <?php query_posts($query_string . ‘&meta_key=categori&cat=meta_value&orderby=date&’); ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <div class=”topics_box” align=”center”>

    <dl>
    <dt>“><?php the_date(); ?><?php the_title(); ?></dt>
    </dl>

    </div>

    <?php endwhile; endif; ?>
    <!– / –>

    ※カスタムフィールドには
    名前:categori  値:8(表示したいカテゴリID)
    と入力しています。

    初心者的な質問でしたらすいません。色々やってみたのですがどうしてもできないので、
    どなたかお力添え宜しくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • ども。

    query_postsの中に書いてあるmeta_keyが何なのか、taro33さんは混同しているようです。

    全投稿をデータベースから引っ張り出して、それぞれの投稿にmeta_key(カスタムフィールドのキー)に何が設定されているか?というのが、query_postsの条件に書くmeta_keyなりmeta_value
    の意味するところです。

    [方針]
    まず、表示している固定ページに設定されているカスタムフィールドの、キーがcategoriの値を取得します。(例:$categori)
    その上で、query_postsに、条件としてカテゴリIDに$categoriを指定して投稿を検索します。

    [サンプル]
    キーがcategoriが複数指定してある場合や、設定されていない場合のことが書かれていませんので、ひとつも無ければ何も表示しない、複数あっても最初の1つのほかを無視する、
    ってことで。

    <?php $categori=get_post_custom_values('categori');
        if (!is_null($categori)): ?>
          <?php query_posts('cat='.$categori[0].'&orderby=date'); ?>
          <?php if (have_posts()) : ?>
             <dl>
             <?php while (have_posts()) : the_post(); ?>
                <dt><?php the_date(); ?></dt>
                <dd><?php the_title(); ?></dd>
             <?php endwhile;?>
             </dl>
          <?php endif;wp_reset_query(); ?>
       <?php endif;?>

    とりあえず動くと思いますが、カスタムフィールドに不適切な値が入った場合など
    諸々の処理はよしなに。

    参考になれば

    トピック投稿者 taro33

    (@taro33)

    aimaimさん

    早速のお答えありがとうございます。
    なるほど、meta_key・meta_valueの使い方を勘違いしていたみたいです。

    サンプルのコードで無事動作しました! ありがとうございます。助かりました。
     

    ちなみに、教えて頂いたコードに、投稿タグによる絞り込みは追加できるのでしょうか?

    【サンプル】

    <?php query_posts('cat='.$categori[0].'&tag=投稿タグ&orderby=date'); ?>

    以前調べた所によると、query_postsで「tag=」を他の条件と同時に記述すると
    絞り込みが効かなくなるようなので僕レベルでは解決できずあきらめていました。

    追加の質問をしてしまい申訳ありません。
    もし良ければ宜しくお願いします。

    ども。

    きちんと動作確認してませんが、おそらく、query_postsを以下のようにすれば、いけるはずです。
    <?php query_posts(array('category__in' => $categori,'tag_slug__and' => array('投稿タグ'),'orderby'=>'date')); ?>

    適宜修正してください。

    [参考]

    参考になれば。

    トピック投稿者 taro33

    (@taro33)

    aimaimさん

    重ね重ねありがとうございます!
    教えて頂いた投稿タグの方も今から試してみたいと思います。

    お手数おかけ致しました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カスタムフィールドから、表示カテゴリを操作」には新たに返信することはできません。