无法修复此警告:中为Foreach()提供的参数无效

时间:2015-02-20 作者:ARthe

我不知道我做错了什么。一切正常。但我在第页收到警告

Warning: Invalid argument supplied for foreach() in /public_html/wp/xtheme/wp content/themes/tab.php on line 31
这是tab的短代码。foreach循环的这个问题$arr = get_post_meta($post->ID, \'tab_details\',true); foreach ($arr as $part){....}

function tab_shortcode($atts) {
    extract(shortcode_atts(array(
        \'category\' => \'\',
                    ), $atts, \'tab_shortcode\'));
    $q = new WP_Query(
            array(\'posts_per_page\' => \'3\', \'orderby\' => \'menu_order\', \'order\' => \'DESC\', \'post_type\' => \'post_tab\',)
    );
    global $post;
    $list = \'
        <ul class="buttons-tab">
        \';

    while ($q->have_posts()) : $q->the_post();
        $tab_id = get_the_ID();
        $list .= \'<li><a href="#\' . $tab_id . \'">\' . get_the_title() . \'</a></li>\';
    endwhile;
    $list.= \'
                 </ul>
           <div class="tab-content" id="tab">\';


    while ($q->have_posts()) : $q->the_post();
        $tab_id = get_the_ID();

        $arr = get_post_meta($post->ID, \'tab_details\',true);
        $tab_item = \'\';

        foreach ($arr as $part) {
            $tab_item .= \'<div class="text-icon-left">
                            <span class="iconCircle fa \' . $part[\'icon\'] . \'"></span>
                            <div class="text">
                                <p>\' . $part[\'text\'] . \'</p>
                            </div>
                        </div>\';
        }
        $list .= \'
            <div class="item tab-pane" data-hash="\' . $tab_id . \'">\' . $tab_item . \'</div>\';
    endwhile;
    $list.= \'
           </div>
        \';
    wp_reset_query();
    return $list;
}

add_shortcode(\'tab\', \'tab_shortcode\');
选项卡显示良好,但此警告显示在页面上。

1 个回复
SO网友:cybmeta

设置的第三个参数时get_post_meta 为true,函数返回一个字符串,as you can read in the codex. 因此:

$arr = get_post_meta($post->ID, \'tab_details\', true);
制造$arr 成为字符串和a string is not a valid argument for a PHP foreach loop 这就是错误消息所说的。

相反,如果将第三个参数设置为false 或者将其留空,您将获得一个包含指定meta\\u键的所有值的数组(如果未找到值,则为空数组):

$arr = get_post_meta($post->ID, \'tab_details\');
//Now $arr is an array
foreach($arr as $part){....}

结束

相关推荐

Children Shortcodes?

几周前我开始创建WordPress插件,我想知道是否有可能在其他一些插件中“嵌入”短代码。基本上,我想做的是根据插件用户输入的一组项目创建一个表或列表。有没有可能有这样的东西: [data] [item1] something [/item1] [item2] something else[/item2] [item3] something else[/item3] [/data] 简而言之,我想基于itemX“children”短代码中