我正在使用ACF插件很棒,但我正在努力解决它的一个功能,即复选框。
我正在尝试使用此复选框作为将博客帖子推广到“头条新闻”的方法。
所以我设置了一个名为'top_story'的ACF复选框字段,如果选中它,则应该提升帖子,如果没有选中,则不会宣传帖子。
现在这确实有效,但每当博客文章没有勾选该复选框时,我都会收到以下错误消息。
警告:in_array()[function.in-array]:第二个参数的数据类型错误
我简化了代码,所以它看起来像这样:
<?php
if( in_array( 'topstory', get_field('top_story') ) )
{
echo '<h1>This is a top story</h1>';
}
else
{
echo '<h1>This isn't a top story</h1>';
}
?>
所以我想我想知道的是这里出了什么问题以及如何纠正它?看起来因为数组中没有值不是'顶级故事'的帖子,那么没有参数传递到'get-field'函数并且它会失败?
我只是隐藏错误,因为它基本上仍然可以正常工作,但这对我来说并不合适,我相信我将来需要再次这样做。
提前感谢您的所有时间和帮助。
答案 0 :(得分:0)
也许是这样的:
<?php
// args to check if "Top Story" os TRUE:
$args = array(
'cat' => '5', // Enter Category for "Topstories"
'posts_per_page' => 3, // How many posts to show if multiple selected "Backend"
'orderby' => 'date', // How to sort posts - date, rand etc...
'order' => 'asc', // How to order posts - ASC, desc etc...
'meta_key' => 'topstory', // Name of ACF field to filter through
'meta_value' => 'yes' // Yes = Show, No = Don't show
);
// The results:
$the_query = new WP_Query( $args );
// The Loop:
<?php if( $the_query->have_posts() ) :?>
<h1>This is a top story</h1>
<?php
while ( $the_query->have_posts() ) : $the_query- >the_post(); ?>
....
// Properties to show you post //
....
endwhile;
endif;
wp_reset_query(); // Reset/kill query
?>
答案 1 :(得分:0)
听起来你可能会碰到两件事:
在任何一种情况下,您都没有使用in_array进行搜索的数组,如果您尝试,则会收到警告。
我在ACF's documentation之后试试这个。您还应该考虑使用ACF的True / False字段,这是专为此类事情而设计的;复选框字段更适用于多个复选框,其中多个复选框可以为真。
<?php
$topStory= get_field('top_story');
if($topStory) // Check whether this meta field exists at all
{
if(is_array($topStory) && in_array( 'topstory',$topStory ) {
echo "<h1>This is a top story</h1>";
}
else {
echo "<h1>This isn't a top story</h1>";
}
}
?>
如果你有a True/False field,你可以更简单一点:
<?php
if(get_field('top_story')) {
echo "<h1>This is a top story</h1>";
} else {
echo "<h1>This isn't a top story</h1>";
}
&GT;