搜索结果页上有多个If Else语句

时间:2013-07-18 作者:mtuttle

好的,我有一些CPT的设置,其中有一个metabox,它只需要某些类别的一些值。搜索特定类别时,如果该值(url)存在,我想显示该值的链接,如果不存在,则不显示该值。我现在显示的是所有三个按钮,无论该值是否存在。有人知道我如何根据元值是否存在只显示一个“读取更多”按钮吗?

    <?php if( get_post_meta($post->ID, \'recent_action\', true) ) { ?>

            <a class="button" href="<?php echo get_post_meta($post->ID, "recent_action", true); ?>">Recent Action Link</a>

            <?php } ?>

            <?php if( get_post_meta($post->ID, \'related_link\', true) ) { ?>

            <a class="button" href="<?php echo get_post_meta($post->ID, "related_link", true); ?>">Related Link</a>

            <?php } ?>

            <?php if( get_post_meta($post->ID, \'imp_docs_link\', true) ) { ?>

            <a class="button" href="<?php echo get_post_meta($post->ID, "imp_docs_link", true); ?>">Important Documents Link</a>

            <?php } ?>

2 个回复
最合适的回答,由SO网友:Vigs 整理而成

<?php if(strlen(get_post_meta($post->ID, \'recent_action\', true)) !== 0){ ?>
            <a class="button" href="<?php echo get_post_meta($post->ID, "recent_action", true); ?>">Recent Action Link</a>
<?php } elseif(strlen(get_post_meta($post->ID, \'related_link\', true)) !== 0){ ?>
            <a class="button" href="<?php echo get_post_meta($post->ID, "related_link", true); ?>">Related Link</a>
<?php } elseif(strlen(get_post_meta($post->ID, \'imp_docs_link\', true)) !== 0){ ?>
            <a class="button" href="<?php echo get_post_meta($post->ID, "imp_docs_link", true); ?>">Important Documents Link</a>
<?php } ?>
或者更好(情况取决于可靠性的提高):

<?php if(!empty(get_post_meta($post->ID, \'recent_action\', true))){ ?>
            <a class="button" href="<?php echo get_post_meta($post->ID, "recent_action", true); ?>">Recent Action Link</a>
<?php } elseif(!empty(get_post_meta($post->ID, \'related_link\', true))){ ?>
            <a class="button" href="<?php echo get_post_meta($post->ID, "related_link", true); ?>">Related Link</a>
<?php } elseif(!empty(get_post_meta($post->ID, \'imp_docs_link\', true))){ ?>
            <a class="button" href="<?php echo get_post_meta($post->ID, "imp_docs_link", true); ?>">Important Documents Link</a>
<?php } ?>
如果确定返回的是字符串,则使用strlen()。对于所有其他情况,请使用empty()。

SO网友:s_ha_dum

PHP的empty 就是为了这个。

if(!empty(get_post_meta($post->ID, \'recent_action\', true))) {
  // there is data; do stuff
} elseif (!empty(get_post_meta($post->ID, \'related_link\', true))) {
  // there is data; do stuff
} // and so on

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在