在过去的几个小时里,我一直在努力找出这个问题的症结所在。。。
<?php $related_posts = get_field(\'related_posts\'); ?>
<?php if ($related_posts) : ?>
<div class="related-projects_items-list-container">
<div class="comments-area-title">
<h4 class="hN"><?php _e(\'<em>Related</em> Articles\', wpgrade::textdomain()); ?></h4>
</div>
<ul class="related-projects_items-list grid">
<?php
foreach ($related_posts as $post_object) {
$the_post_ID = $post_object->ID;
$the_permalink = get_permalink( $post_object->ID );
$the_title = get_the_title( $post_object->ID );
$the_thumbnail = get_the_post_thumbnail( $post_object->ID, array(200,150) );
$the_post_author = $post_object->post_author;
?>
<li class="related-projects_item grid__item one-half lap-and-up-one-quarter" style="margin-bottom: 20px;">
<article class="article article--billboard-small">
<a href="<?php echo $the_permalink; ?>">
<div class="article__thumb">
<?php if (has_post_thumbnail( $the_post_ID )) echo $the_thumbnail; ?>
</div>
<div class="article__content">
<h2 class="article__title article--billboard-small__title">
<span class="hN"><?php echo $the_title; ?></span>
</h2>
<span class="article__description">
<?php $author_url = get_author_posts_url( $the_post_author ); ?>
<?php $author_name = get_the_author_meta( \'display_name\', $the_post_author ); ?>
<?php echo $author_name; ?> - <?php echo get_post_time(\'d.m.Y\', false, $the_post_ID, false); ?>
</span>
<span class="small-link"><?php _e(\'Read More\', wpgrade::textdomain()); ?><em>+</em></span>
</div>
</a>
</article>
</li>
<?php } ?>
</ul>
</div>
<?php endif; ?>
我明白了。。。
Warning: Invalid argument supplied for foreach() in /wp-includes/post-thumbnail-template.php on line 64
问题是这条线。。。
$the_thumbnail = get_the_post_thumbnail( $post_object->ID, array(200,150) );
我不明白为什么!有人能帮忙吗?
我正在使用WordPress v.3.9.1
最合适的回答,由SO网友:Tom J Nowell 整理而成
此Trac记录单描述了您的问题和原因:
https://core.trac.wordpress.org/ticket/26321
我收到一条与以下内容相关的警告/错误
update_post_thumbnail_cache()
功能:
警告:中为foreach()提供的参数无效/wp包含/发布缩略图模板。php第64行$wp_query->posts
缺少数组,但我们有一个$wp_query->post
.
foreach ( $wp_query->posts as $post ) {
if ( $id = get_post_thumbnail_id( $post->ID ) )
$thumb_ids[] = $id;
}
票证#26321描述了当页面上的自定义WP\\U查询循环尝试获取帖子缩略图时,Core会尝试缓存当前查询中帖子的缩略图。
出现这个问题是因为这样做时,它会在查询中的帖子上循环,但它从不检查帖子数组是否为空。如果是,那么你会得到警告。
目前,我将等待WP Core中的解决方案。警告并没有破坏代码逻辑中的任何内容(尽管警告仍然是不可取的)。
不过,您可以提供帮助,登录到trac,下载补丁并帮助测试它们。您提供的测试和帮助越多,修复错误的速度就越快,它就越快进入WordPress核心。
如果您自己设法修复bug并满足所有单元测试,您可能会得到道具!在运行该版本的每个WordPress安装中,您的名字都会出现在“关于/贡献者”页面上
SO网友:Tom J Nowell
我不知道你为什么认为帖子缩略图是罪魁祸首,但警告提到了foreach
. 如果删除html,我们会看到:
$related_posts = get_field(\'related_posts\');
if ( $related_posts ) {
foreach ( $related_posts as $post_object ) {
很明显,这就是你发出警告的原因。
由于您要为具有多个选项的字段返回一个值,因此这将是一个更好的检查:
$related_posts = get_field(\'related_posts\');
if ( !empty( $related_posts ) ) {
foreach ( $related_posts as $post_object ) {
现在将捕获:
空数组空字符串假值