【问题标题】:ACF variable not adding to arrayACF 变量未添加到数组
【发布时间】:2020-09-23 20:48:37
【问题描述】:

我有以下代码。一切正常,回显时 $thumb 输出正确的值(一个 URL),但是当我将它添加到这个数组时 category_image 只是一个空白值。


function th_get_places_data(){
    $maps_data = th_get_places();

    if(!$maps_data) return;

    $places_array = array();
    foreach ($maps_data as $key => $id) {
        $location = get_field('location', $id);
        //print_r($location);
        //$term = wp_get_post_terms($id, 'place_category');
        $term = get_terms(
            'place_category',
            array(
                'hide_empty' => false
            )
           );
        //print_r($term);
        $lat = $lng = '';
        if($location !== '' && !empty($term) ){
            $lat = $location['lat'];
            $lng = $location['lng'];

        $category_img_slug = 'place_category_' . $term[0]->term_id;
        $thumb = the_field('category_thumbnail', $category_img_slug );
        echo $thumb;
        //Outputs https://localhost/image.png
            $places_array[$key] = array(
                'id'             => $id,
                'title'          => get_the_title($id),
                'address'        => get_field('address', $id),
                'phone'          => get_field('phone', $id),
                'url'            => get_field('url', $id),
                'lat'            => $lat,
                'lng'            => $lng,
                'category'       => $term[0]->slug,
                //category_image returns blank
                'category_image' => $thumb
                // Adding URL manually works fine
                //'category_image' => 'https://localhost/image.png'
            );
        }
    }

    return $places_array;
}


谁能告诉我为什么没有添加这个 URL 字符串?

数组的var_dump:

array(2) { [0]=> array(9) { [“id”]=> int(248) [“title”]=> string(15) “Coastal Cookery” [“address”]=> string(41) “4553 Some Ave, Some City, BC V9A 2N9” [“phone”]=> string(14) “(555 455-5568” [“url”]=> string(0) “” [“lat”]=> float(49.8390779) [“lng”]=> float(-124.5282024) [“category”]=> string(12) “arts-culture” [“category_image”]=> NULL } [1]=> array(9) { [“id”]=> int(237) [“title”]=> string(21) “A restaurant” [“address”]=> string(41) “123 Some St, Some City, BC V2A 3A2” [“phone”]=> string(12) “250-345-6789” [“url”]=> array(3) { [“title”]=> string(7) “Contact” [“url”]=> string(44) “http://localhost/contact” [“target”]=> string(0) “” } [“lat”]=> float(49.8315734) [“lng”]=> float(-124.5197612) [“category”]=> string(12) “arts-culture” [“category_image”]=> NULL } } Array ( [0] => Array ( [id] => 248 [title] => A restaurant [address] => Some Ave, Some City, BC V9A 2N9 [phone] => (555) 455-5568 [url] => [lat] => 49.8390779 [lng] => -124.5282024 [category] => arts-culture [category_image] => ) [1] => Array ( [id] => 237 [title] => Some Restaurant [address] => Some St, Come City, BC V2A 3A2 [phone] => 250-345-6789 [url] => Array ( [title] => Contact [url] => http://localhost/contact/ [target] => ) [lat] => 49.8315734 [lng] => -124.5197612 [category] => arts-culture [category_image] => ) ) 

【问题讨论】:

  • @Mech 你什么意思?
  • 什么也没看到。当你说$thumb 时信任你是一个字符串。返回数组的var_dump 是什么样的?该值为空,或者category_image 键甚至不存在?您如何确定这一点?
  • 使用var_dump。由于我们无法查看所有代码,因此我们知道 the_field 返回的值是一个对象,当您 echo 时,我们会看到该对象的 __toString 表示。
  • 添加了 var 转储。之后我更改了一些餐厅和地址详细信息,所以如果它们不相同,请不要担心。
  • 好的,NULL 不完全是一个空值。也将echo $thumb; 更改为var_dump。想将其与我们在您的阵列中看到的进行比较。这里的重点是真正了解调用the_field()返回的内容。

标签: php arrays string


【解决方案1】:

我猜你正在开发一个带有高级自定义字段插件的 WordPress 网站。如果是这样,下面的代码是错误的:

$thumb = the_field('category_thumbnail', $category_img_slug );

因为根据ACF document,调用the_field()函数与echo get_field()是一样的。所以你必须改用get_field() 函数:

$thumb = get_field('category_thumbnail', $category_img_slug );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多