WordPress多站点ACF自定义选项页子站点字段不显示问题
WordPress多站点ACF自定义选项页子站点字段消失的解决方法
修正选项页注册代码
你当前的自定义选项页注册写法过于简略,在多站点环境下子站点可能无法正确识别选项页的唯一标识。改成显式传递参数数组,固定菜单slug,确保所有站点的选项页标识一致:
private function __construct() { /** OTHER ACTIONS & FILTERS **/ if ( function_exists( 'acf_add_options_page' ) ) { // 默认选项页 acf_add_options_page(); // 自定义选项页,显式配置参数 acf_add_options_page(array( 'page_title' => 'Admin Options', 'menu_title' => 'Admin Options', 'menu_slug' => 'admin-options', // 固定slug,保证所有站点匹配 'capability' => 'manage_options', 'redirect' => false )); } }
检查字段组位置规则
确认你的ACF字段组位置规则设置为:选项页 → 等于 → Admin Options,并且字段组在对应子站点中存在(如果是站点级激活的ACF,需要每个子站点都同步该字段组;如果是网络激活ACF,字段组会全局生效)。
确保注册代码在正确钩子执行
如果你的类构造函数执行时机过早,可能导致子站点无法完成选项页注册。建议把选项页注册逻辑放到admin_init钩子中触发:
public function init() { add_action('admin_init', array($this, 'register_acf_options_pages')); } private function register_acf_options_pages() { if ( function_exists( 'acf_add_options_page' ) ) { acf_add_options_page(); acf_add_options_page(array( 'page_title' => 'Admin Options', 'menu_title' => 'Admin Options', 'menu_slug' => 'admin-options', 'capability' => 'manage_options', 'redirect' => false )); } }
刷新子站点字段缓存
进入子站点的ACF字段组编辑页面,点击「更新」按钮,强制刷新字段组的缓存,确保系统识别到选项页关联关系。
内容的提问来源于stack exchange,提问作者Frizzant
相关产品推荐
相关产品推荐

