0

exhibitorsカスタム投稿タイプの単一テンプレートにのみ表示されるサイドバーウィジェットを作成しています。

このウィジェットは、からカスタムフィールドメタデータを取得exhibitorsし、リスト形式で出力するだけです。

カスタムフィールドのpost_metaフィールドはそれぞれ目的が異なり、形式も少し異なります。一部は単なるテキストであり、一部はハイパーリンクです。


私の問題

6つのpost_metaのいずれかが存在する場合にのみ、WPクエリを実行する必要があります。

存在しない場合は、周囲のリストを表示する必要はありません。

あなたは私が以下で試したことを見るでしょうが、惨めに失敗します。

<?php 

    $currentID      = get_the_ID();
    $exhibitorMeta      = new WP_Query(array(

      'post_type'       => 'exhibitors',
      'post_id'         => $currentID

)); ?>

<?php if ($exhibitorMeta->have_posts()) : ?> 

    <?php while ($exhibitorMeta->have_posts()) : $exhibitorMeta->the_post(); ?>


        <?php if (  get_post_meta($post->ID, 'Facebook Page', true) ||
                    get_post_meta($post->ID, 'Twitter User', true) ||
                    get_post_meta($post->ID, 'Web Address', true) ||
                    get_post_meta($post->ID, 'E-mail Address', true) ||
                    get_post_meta($post->ID, 'Stand Number', true) ||
                    get_post_meta($post->ID, 'Hall Number', true)
        ) { ?>

        <div class="module sidebar">

            <div class="module-head">

                Exhibitor Info

            </div>

            <div class="module-body">

                <ul class="sidebar-list">

                    <?php if (  get_post_meta($post->ID, 'Facebook Page', true) ) echo '

                        <li><a href="' . get_post_meta($post->ID, 'Facebook Page', true) . '">View our Facebook Page</a></li>

                    '; ?>

                    <?php if (  get_post_meta($post->ID, 'Twitter User', true) ) echo '

                        <li><a href="' . get_post_meta($post->ID, 'Twitter User', true) . '">Follow us on Twitter</a></li>

                    '; ?>

                    <?php if (  get_post_meta($post->ID, 'Web Address', true) ) echo '

                        <li><a href="' . get_post_meta($post->ID, 'Web Address', true) . '">View Website</a></li>

                    '; ?>

                    <?php if (  get_post_meta($post->ID, 'E-mail Address', true) )

                    $emailAddress = get_post_meta($post->ID, 'E-mail Address', true);

                    echo '

                        <li><a href="mailto:' . $emailAddress . '" title="' . $emailAddress . '" target="_blank">' . $emailAddress . '</a></li>

                    '; ?>

                    <?php if (  get_post_meta($post->ID, 'Stand Number', true) ) echo '

                        <li>Stand Number: ' . get_post_meta($post->ID, 'Stand Number', true) . '</li>

                    '; ?>

                    <?php if (  get_post_meta($post->ID, 'Hall Number', true) ) echo '

                        <li>Hall Number: ' . get_post_meta($post->ID, 'Hall Number', true) . '</li>

                    '; ?>

                </ul>

            </div>

            <div class="module-foot"></div>

        </div>

        <?php } ?>


    <?php endwhile; ?> 

<?php unset($exhibitorMeta); endif; wp_reset_query(); ?>

||WPクエリ内でPHP比較を使用して、6つのメタ値のいずれかが存在する場合にのみリストの周囲を表示しようとしたことがわかります。しかし、どういうわけか、周囲のリストを6回だけ出力します。

だからそれはすべて間違っています。

私の質問

同じWPクエリ情報を使用してpost_metaデータ情報を取得することは可能ですか。ただし、post_metaが存在しない場合、周囲のリストは表示されません。

ただし、1つ以上のpost_metaが存在する場合は、リストの周囲が表示され、アクティブなpost_metaがフォーマットされた方法で表示されます。

このように複数のpost_meta値を使用することについてはあまり理解できないように思われるので、どれも素晴らしいでしょう。

ありがとう

4

1 に答える 1

0

get_post_metaが何かを返したかどうかではなく、カスタム値が存在するかどうかをifステートメントでチェックする必要があります。

これを試して:

    <?php 
    $values = get_post_custom_values("Facebook Page"); 
    if ($values[0]) { ?>
        <li><a href="<?php echo $values[0]; ?>">View our Facebook Page</a></li>
    <?php 
    } else { 
        // 
    } 
    ?>
于 2012-07-04T04:10:27.630 に答える