我正在尝试为主题中定义的每个自定义帖子类型注册ACF选项页面:
$post_types = get_post_types(
array(
\'public\' => true,
\'_builtin\' => false
),
\'objects\'
);
foreach ($post_types as $post_type) {
$post_type_slug = $post_type->name;
$options_title = $post_type->labels->name . ": Archive Options";
acf_add_options_page(array(
\'page_title\' => $options_title,
\'menu_title\' => $options_title,
\'parent_slug\' => "edit.php?post_type={$post_type_slug}",
\'menu_slug\' => "{$post_type_slug}-archive-options",
\'capability\' => \'edit_posts\',
\'redirect\' => false
));
}
这是在
acf/init
吊钩(根据建议
by the docs), 自定义帖子类型在WordPress上注册时
init
钩(我还应该提到,这两个动作都是作为
after_setup_theme
操作。)
然而get_post_types()
返回空数组。这是挂钩之间的序列不匹配吗?(即,只有在acf/init
挂钩)
最合适的回答,由SO网友:kero 整理而成
这是挂钩之间的序列不匹配吗?
我会这么说,是的。acf/init
由类ACF执行init
方法,全部位于根文件acf中。php-此方法连接到WordPress\'init
优先级为5
add_action( \'init\', array($this, \'init\'), 5 );
您可能会添加优先级更高的CPT,这意味着
acf/init
将在注册自定义帖子类型之前执行。
为了解决这个问题,我会init
以更高的优先级(小于5)注册CPT。