关系字段问题:中未初始化的字符串偏移量:0

时间:2016-05-16 作者:Hasan

我的代码是:

<?php 
$posts = get_field(\'designer\'); 
if ( $posts ): ?>
<?php foreach( $posts as $post ): ?>
<?php setup_postdata($post); ?>
<div class="design">
    <h4><?php _e("[:tr]Tasarım[:][:en]Design[:]","qtranslate-x"); ?></h4>

    <a href="<?php the_permalink(); ?>">
        <h5><?php the_title(); ?></h5>
    </a>
    <?php if( get_field(\'profile_image\') ): ?>
         <img src="<?php the_field(\'profile_image\'); ?>" width="200" class="img-responsive">
    <?php endif; ?>
    <p>
        <?php the_excerpt(); ?>
    </p>
</div>
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
这将导致以下错误消息:

Notice: Uninitialized string offset: 0 
in /Applications/MAMP/htdocs/addo/wp-includes/query.php 
on line 3920

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

setup_postdata()需要一个post对象,以便使用global $post. 您正在使用一个自定义字段,可能来自ACF,并将其命名为$post。问题是它不是一个对象。

您可以使用该字段$designer 在这样的定制post循环中:

<?php 
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post(); 

        $designer = get_field(\'designer\'); 

        if($designer){
           the_field(\'designer\');
        }
    } 
} 
解决此问题的另一种方法可能是确保设计器自定义字段返回post对象。查看get_field(\'designer\') 您可以执行以下操作:

$designer = get_field(\'designer\');
var_dump($designer);
post对象将包含所有相关信息(标题、内容等)。

相关推荐