在PHP中访问ACF子字段(灵活内容区域)中的值

时间:2019-12-30 作者:steve

我试图使用PHP访问ACF子字段的值。

$articles = get_posts(
 array(
  \'posts_per_page\' => -1,
  \'post_status\' => \'publish\',
  \'post_type\' => array(\'venues\', \'suppliers\'),
 )
);


$locations = array();
foreach ($articles as $article) {

    $field = get_field(\'info_items\', $article->ID, false);

    if( have_rows(\'info_items\') ):
        while( have_rows(\'parent_field\') ): the_row();

        $value = get_sub_field(\'info_location\');

        endwhile;

    endif;
    var_dump($value);
    exit();
}
在上面的代码中,如果我var_dump 的内容$field 我得到的数组显示了所有子字段,包括我想要的子字段:

数组(3){[0]=>数组(2){[“acf_fc_布局”]=>字符串(13)“信息位置”[“场区”[59ea62cf04adf”]=>字符串(16)“曼彻斯特”}[1]=>数组(2){[“acf_fc_布局”]=>字符串(10)“信息手机”[“场区”[59ea634904ae3”]=>字符串(11)“08009788221”}[2]=>数组(3){“acf_fc_布局”]=>字符串(12)“场区”[[635CUhttps://www.stuffandstuff.co.uk“[”field\\u 5c6802013bb34“]=>字符串(0)”“}}}空

我试图检索“info\\u location”值,在本例中是字符串“Manchester”。

have\\u rows循环来自ACF网站的docs for get\\u sub\\u字段,但在此上下文中不起作用。

1 个回复
SO网友:nmr

您可以迭代通过get_posts(), 因此,必须将post ID作为函数的第二个参数传递have_rows().默认情况下,使用当前帖子的ID。

foreach ($articles as $article) {

    $value = null;
    if( have_rows( \'info_items\', $article->ID ) ): 
        while( have_rows( \'info_items\', $article->ID ) ): the_row();

            $value = get_sub_field(\'info_location\');

        endwhile;

    endif;

    echo "<br>{$article->ID} ";
    var_dump($value);
}

相关推荐

有没有可能不在unction.php上定义类别,加上短码[短码CAT=1]来展示产品?

我创建了一个名为home_slider. 如果我使用[home_slider] 然后,我将在我的页面上获得正在工作的滑块。现在我关心的是,是否可以不在函数上定义类别。php并添加快捷码[home\\u slider cat=1],以显示与类别id 1相关的产品?<?php function home_slider(){ ob_start(); $args = array( \'post_type\' => \'productslider\', \