为何包含get_field的函数返回NULL?外部直接调用get_field却正常
问题原因与解决办法
这是PHP的变量作用域问题:函数getImageId()内部默认无法访问外部定义的$prod_cats变量,导致get_field接收的参数无效,最终返回NULL。
解决方法
方法一:将变量作为参数传入函数(推荐)
修改函数定义,让它接收分类数据作为参数,调用时传入目标分类项:
$args = [ 'taxonomy' => 'product_cat', 'parent' => 88, ]; $prod_cats = get_terms( $args ); function getImageId($term){ var_dump( get_field( 'image', $term ) ); } getImageId($prod_cats[0]); // 输出int(1854) var_dump( get_field( 'image', $prod_cats[0] ) ); // int(1854)
方法二:在函数内部声明全局变量
在函数内通过global关键字引入外部的$prod_cats变量:
$args = [ 'taxonomy' => 'product_cat', 'parent' => 88, ]; $prod_cats = get_terms( $args ); function getImageId(){ global $prod_cats; // 声明使用全局变量 var_dump( get_field( 'image', $prod_cats[0] ) ); } getImageId(); // 输出int(1854) var_dump( get_field( 'image', $prod_cats[0] ) ); // int(1854)
注意:优先使用方法一,全局变量容易引发命名冲突和代码维护问题,传参的方式逻辑更清晰、安全性更高。
内容的提问来源于stack exchange,提问作者ali3412
相关产品推荐
相关产品推荐

