ACF菜单图片已设返回URL却返回ID,如何解决?
问题原因及解决方法
可能的原因及对应解决方案
1. 字段返回格式未生效(未重新保存菜单)
虽然你在ACF字段设置里选择了「Image URL」,但如果是设置字段前就已添加的菜单项,旧数据仍会以ID形式存储。需要重新保存对应的菜单项,让ACF更新存储格式。
2. get_field的参数传递问题
菜单项的自定义字段获取,需要确保传递正确的标识。尝试将get_field的第二个参数改为$item->ID:
$menu_image = get_field('menu_image', $item->ID);
或者更严谨地指定菜单项的上下文:
$menu_image = get_field('menu_image', 'nav_menu_item_' . $item->ID);
3. 强制转换为图片URL(兜底方案)
如果以上方法都无效,直接通过图片ID获取完整URL:
add_filter('wp_nav_menu_objects', 'kodr_wp_nav_menu_objects', 10, 2); function kodr_wp_nav_menu_objects( $items, $args ) { foreach( $items as &$item ) { $menu_image_id = get_field('menu_image', $item); if( $menu_image_id ) { $menu_image_url = wp_get_attachment_url($menu_image_id); $item->title .= '<img src="'.$menu_image_url.'" class="menu-image" alt="menu banner">'; } } return $items; }
内容的提问来源于stack exchange,提问作者alexkodr
相关产品推荐
相关产品推荐

