我目前使用的是一种自定义帖子类型,带有一个作为复选框的自定义字段。复选框中有多个值,包括:笔记本电脑、新建、无营销文本等。如果没有营销文本是唯一选择的文本,那么它在执行我希望它执行的操作时没有问题。如果选中了多个复选框,则只查看第一个选中的复选框。即使选中了多个复选框,我应该更改什么以使其工作?
<?php
//REMOVES BACK TO TOP BUTTON FOR PROGRAMS THAT HAVE NO MARKETING BLURB - JUNE 27, 2013 - Brandon Carson
if("No-marketing-text" == get_post_meta($post->ID, \'program_flags\', true)){
echo "";
}else{
echo "<div class=\'content-block\'>";
the_content();
echo "<a class=\'back-to-top-link\' href=\'#top\'>Back to Top</a></div>";
}
?>
SO网友:Johannes Pille
在这样的前提下,您的数据库条目确实得到了正确保存,并且您的问题仅在检索时出现:
如果选择了多个框,则值应作为序列化数组存在于数据库中<幸运的是,get_post_meta
为我们取消序列化,但它们仍然是数组
因此,您的条件应该这样修改:
$program_flags = get_post_meta( $post->ID, \'program_flags\', true );
if(
\'No-marketing-text\' === $program_flags
||
( is_array( $program_flags ) && in_array( \'No-marketing-text\', $program_flags ) )
){
// do your thing
}