Blog

【WordPress】特定のカスタム投稿を他のカスタムフィールドで指定して表示

2017/02/18

カスタム投稿

備忘録です。

今まで、固定ページやarchive.php、taxonomy.phpなどに表示したいカスタム投稿をチェックボックスで指定する方法を紹介しました。
【WordPress】表示したいカスタム投稿をチェックボックスで指定1
【WordPress】表示したいカスタム投稿をチェックボックスで指定2

今回はsingle-●●.phpで特定のカスタム投稿を別のカスタム投稿のカスタムフィールドで指定して表示する方法です。

single-test.phpで関連する他のカスタム投稿(foo)を表示するため
testのカスタムフィールド(testtest)でfooのタームスラッグを記述します。

single-test.phpに記述

<?php $q = new WP_Query(array('post_type' => 'foo')); ?>
    <?php if($q->have_posts()): ?>
    <div>
        <ul>
            <?php
                $Q = array(
                'posts_per_page'  => '4',
                'tax_query' => array(
                array(
                    'taxonomy' => 'boo',
                    'field' => 'slug',
                    'terms' => get_post_custom_values( 'testtest', $post_id ), //カスタムフィールドで指定したフィールド名
                    ),
                ),
                'orderby' => 'date',
                'order' => 'DESC',
                );
                query_posts($Q);
            ?>
            <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
            ここにtestのカスタムフィールドtesttestで記述したfooのタームに属する投稿を表示します。
            <?php endwhile; ?>
            <?php endif; ?>
        </ul>
    </div>
    <?php endif; ?>
<?php wp_reset_query(); ?>

single-test.phpでfooのターム(booboo)に属する投稿を表示する場合には、testのカスタムフィールドtesttestに「booboo」と記述します。
上記のタグを記述することにより、single-test.phpにfooのbooboo一覧が表示されます。

注意点としては、testtestに存在しないfooのタームスラッグや間違った文字を記述すると何も表示されません。

もう少し、スマートな方法があるかもしれませんが、まずは、この方法で表示することができました。
同様のお悩みをお持ちの方は、一度お試しください。

カテゴリー

月間アーカイブ

MORE

ミュージシャンズ・プラザ

神社仏閣ホームーページ制作

ホームページ制作問合せ