WP Query与get_post_meta条件合并

时间:2012-07-03 10:41:40

标签: php wordpress

我正在制作侧边栏小部件,该小部件仅显示在我的自定义帖子类型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,则不会出现列表环境。

但是如果存在一个或多个post_meta,那么列表周围环境会出现,并且活动的post_meta会以其格式化的方式出现。

任何事情都会如此之大,因为我似乎无法在使用多个这样的post_meta值上找到太多。

由于

1 个答案:

答案 0 :(得分:0)

您希望if语句检查自定义值是否存在,而不是get_post_meta返回的内容。

试试这个:

    <?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 { 
        // 
    } 
    ?>