質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • PHP

    21393questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    7693questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

[wp]複数のカスタム投稿一覧の時に、一つのカスタム投稿だけターム指定をしたい。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 733

cues

score 17

お世話になります。

2つのカスタム投稿のタイトル一覧記事を作成したいと思っています。

post_type:「news」「flyer」 があり、
「news」は、ターム「event」のみを出力し、「flyer」 に関してはターム指定がなくすべての記事を表示したいです。

下記のようにすると、「flyer」 もターム指定してしまい困っております。

宜しくお願いいたします。

<?php
  $toplist = array(
                        'post_type' => array('news','flyer'),
                       'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'news_cat', /* 指定したい投稿タイプが持つカスタム分類を指定 */
            'field' => 'slug',
            'terms' => 'event', /* 指定したカスタム分類が持つタームのスラッグを指定 */
        ),
       array(
            'taxonomy' => 'flyer_cat', /* 指定したい投稿タイプが持つカスタム分類を指定 */
            'field' => 'slug',
            'terms' => 'gas', /* 指定したカスタム分類が持つタームのスラッグを指定 */
        ),
    ),
                        'showposts' => 10,
                        'order' => 'DESC',
                        'orderby' => 'date',
                        'ignore_sticky_posts' => 1,
                        );
                    ?>

                    <?php query_posts($toplist); ?>


                    <?php if (have_posts()): ?>
                        <ul>

                        <?php while(have_posts()):the_post(); ?>
                            <?php $post_type = esc_html(get_post_type_object(get_post_type())->name); ?>
                            <?php if($post_type=='news'): ?>
                            <li><span><?php the_time('Y.m.d'); ?></span><span><a href="<?php bloginfo('url'); ?>/news/#<?php the_ID(); ?>"><?php echo mb_substr($post->post_title, 0, 30).'…'; ?></a></span></li>

                            <?php else : ?>
                                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
                            <?php endif; ?>
                        <?php endwhile; ?>

                        </ul>
                    <?php else : ?>
                        <p>ただいま準備中です。しばらくお待ちください。</p>
                    <?php endif; ?>

                    <?php wp_reset_postdata(); wp_reset_query(); ?>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

参考URL1の回答を参考にして、以下のようにしてみてはいかがでしょうか?

// 本コードは未試験です
$toplist = array(
    'post_type' => array('news','flyer'),
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'news_cat', /* 指定したい投稿タイプが持つカスタム分類を指定 */
            'field' => 'slug',
            'terms' => 'event', /* 指定したカスタム分類が持つタームのスラッグを指定 */
        ),
        array(
            'taxonomy' => 'news_cat',
            'operator' => 'NOT EXISTS',
        ),
    ),
    'showposts' => 10,
    'order' => 'DESC',
    'orderby' => 'date',
    'ignore_sticky_posts' => 1,
);


参考URL

  1. トピック: 2つのカテゴリー+カスタムフィールドの値で条件設定 -  サポートフォーラム - WordPress
    https://ja.wordpress.org/support/topic/2%E3%81%A4%E3%81%AE%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%83%BC%EF%BC%8B%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E5%80%A4%E3%81%A7%E6%9D%A1%E4%BB%B6
  2. 関数リファレンス/WP Query - WordPress Codex 日本語版
    https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query#.E3.82.BF.E3.82.AF.E3.82.BD.E3.83.8E.E3.83.9F.E3.83.BC.E3.81.AE.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/10 15:53

    大変助かりました!思い通りに動作いたしました(^^)!

    キャンセル

同じタグがついた質問を見る

  • PHP

    21393questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    7693questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。