我正在制作侧边栏小部件,该小部件仅显示在我的自定义帖子类型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值上找到太多。
由于
答案 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 {
//
}
?>