Using foreach loop breaks

时间:2016-08-29 作者:mkafiyan

我是WordPress的新手,我对“循环”有意见我有两个自定义帖子类型,分别命名为“book”和“author”。在作者帖子类型中,我有一个自定义字段复选框,可以在作者和翻译人员之间进行选择。同样在book post类型中,我有两个元框,用户必须从中选择作者和翻译人员的名称。所有元框和自定义post类型都工作得很好,但当我想调用它们并使用每个元框的值时,我遇到了问题。我的代码可以很好地读取author值,但translator值只显示author的最后一个值,我无法理解为什么会发生这种情况?我认为foreach是问题所在。但我不知道该怎么解决它。这是我的单本书代码。php

<?php $args = array( \'post_type\' => \'book\'); 
    $loop = new WP_Query( $args );
    while ( have_posts() ) : the_post();
// for reading author which choose from cheak box in each book pages.
    $post_id = get_the_ID(); 
    $key = \'save-author-to-book\';
    $key2=\'save-trans-to-book\';
    $vals=get_post_meta($post_id, $key2, true);
    $values = get_post_meta( $post_id, $key, true );
    $feat_image = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
    ?>
    echo \'<h4 class="text-right color-style"> نویسنده : \';
    foreach($values as $value){
        $author=get_post($value);
        echo \'<a href="\'.
        get_post_permalink($value).\'" target="_blank">\'.
        $author->post_title .\'</a> ، \' ;}
    echo \'</h4>\';

    echo \'<h4 class="text-right color-style"> مترجم : \';
        foreach($vals as $val){
        $trans=get_post($val);
        echo \'<a href="\'.
        get_post_permalink($val).\'" target="_blank">\'.
        $author->post_title.\'</a>، \';}

    echo \'</h4>\';
任何想法都将不胜感激。

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

我相信你的问题是$vals=get_post_meta($post_id, $key2, true);

如果检查codex,则get_post_meta 是返回单个值还是返回值数组。您已将其设置为true 这意味着只返回一个值。

尝试一下false (默认设置)它应该可以工作。

SO网友:The J

我不能评论尼古拉斯的回答,但我同意他的看法。如果我正确理解您的问题,那是因为您正在使用true 结束时:

$vals=get_post_meta($post_id, $key2, true);
$values = get_post_meta( $post_id, $key, true );
使用true时,从Codex:

$single (bool)(可选)是否返回单个值。

Return 如果$single为false,则(mixed)将是一个数组。如果$single为true,则为元数据字段的值。

你不能foreach A.string, 只有arrays, 因此,如果您不使用false 相反,您的代码无法工作。

或者,如果您只需要post_meta, 继续使用true, 那你为什么要用foreach呢?你不需要它,你可以简单地使用它:

if($value != \'\') {
    $author=get_post($value);
    echo \'<a href="\'.get_post_permalink($value).\'" target="_blank">\'.$author->post_title .\'</a> ، \' ;
}

SO网友:Andrei

小心第11行:

    $feat_image = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
    ?>
    echo \'<h4 class="text-right color-style"> نویسنده : \';
您是否完全使用此代码?因为您在获取$feat_image 然后,代码继续使用PHP语法,如echo.

我相信密码会因为这一点而中断?> 第一个循环永远不会结束。