这可能是由于在ACF Repeater字段中使用了“User Role”或“User Capability”条件导致的。在访客试图访问页面时,由于他们没有用户角色或访问权限,因此该字段为空。
为了解决此问题,可以使用以下代码,将用户角色和访问权限设置为公共:
add_filter('acf/fields/repeater/query/key=YOUR_REPEAT_FIELD_KEY', 'my_acf_repeater_query', 10, 3); function my_acf_repeater_query( $args, $field, $post_id ) { $args['post_type'] = get_post_types(array('public' => true)); $args['meta_query'] = array( array( 'key' => 'YOUR_REPEAT_FIELD_KEY_user_role', 'value' => '', 'compare' => 'LIKE' ), array( 'key' => 'YOUR_REPEAT_FIELD_KEY_user_capability', 'value' => '', 'compare' => 'LIKE' ) ); return $args; }
在上面的代码中,将“YOUR_REPEAT_FIELD_KEY”替换为你的ACF Repeater字段的键名。
此代码将检查当前用户是否有“User Role”或“User Capability”字段中的任何角色或权限。如果没有,则查询将默认为帖子类型为公共的。这将使ACF Repeater在登录和未登录状态下均可正确显示。
希望这可以帮助解决你的问题。