我正试图在WP中使用高级自定义字段设置选项页。
我在functions.php
文件中的内容:
if( function_exists('acf_add_options_page') ) {
acf_add_options_page();
acf_add_options_sub_page('General');
acf_add_options_sub_page('Header');
acf_add_options_sub_page('Footer');
}
问题是function_exists('acf_add_options_page')
返回false
。
这个功能似乎不存在,但我使用的是最新版本的ACF。
当我尝试使用acf_add_options_page();
时:
我得到以下Uncaught Error: Call to undefined function acf_add_options_page()
当我避免使用acf_add_options_page();
时,只使用acf_add_options_sub_page()
:
我收到以下警告
Warning: Illegal string offset 'slug' in C:'xampp'htdocs'wp-content'plugins'acf-options-page'acf-options-page.php on line 230
Warning: Illegal string offset 'title' in C:'xampp'htdocs'wp-content'plugins'acf-options-page'acf-options-page.php on line 230
p.s.我在functions.php
上使用hook(尝试使用init、plugins_loaded和admin_init)来加载函数:
add_action('init', 'my_init_function');
function my_init_function() {
if( function_exists('acf_add_options_page') ) {
acf_add_options_page();
acf_add_options_sub_page('General');
acf_add_options_sub_page('Header');
acf_add_options_sub_page('Footer');
}
}
我也遇到了类似的问题,但我将代码作为必须使用的插件的一部分运行。
问题是acf插件是在mu插件之后加载的,所以该函数还不存在。
我使用plugins_loaded
操作在所有插件加载后立即运行它。
这是我的代码:
// Add Options Page
function add_my_options_page() {
if( function_exists('acf_add_options_page') ) {
acf_add_options_page();
}
}
add_action( 'plugins_loaded', 'add_my_options_page' );
尝试不添加操作。只需:
if( function_exists('acf_add_options_page') ) {
acf_add_options_page(array(
'page_title' => 'Theme Settings',
'menu_title' => 'Theme Settings',
'menu_slug' => 'theme-general-settings',
'capability' => 'edit_posts',
'redirect' => true,
'icon_url' => 'dashicons-screenoptions',
'position' => 22
));
acf_add_options_sub_page(array(
'page_title' => 'General',
'menu_title' => 'General',
'parent_slug' => 'theme-general-settings',
));
...
}
嗨,试试这个$parent['menu_slug']
if( function_exists('acf_add_options_page') ) {
$parent = acf_add_options_page(array(
'page_title' => 'Theme General Settings',
'menu_title' => 'General',
'menu_slug' => 'theme-general-settings',
'capability' => 'edit_posts',
'redirect' => false,
));
acf_add_options_sub_page(array(
'page_title' => 'Header',
'menu_title' => 'Header',
'parent_slug' => $parent['menu_slug'],
'capability' => 'edit_posts',
'redirect' => false,
));
acf_add_options_sub_page(array(
'page_title' => 'Footer',
'menu_title' => 'Footer',
'parent_slug' => $parent['menu_slug'],
'capability' => 'edit_posts',
'redirect' => false,
));
}
https://www.advancedcustomfields.com/resources/acf_add_options_sub_page/
以下是我如何使其工作的:
if( function_exists('acf_add_options_page') ) {
acf_add_options_page(array(
'page_title' => 'Header Settings',
'menu_title' => 'Header',
'menu_slug' => 'header-settings'
));
acf_add_options_page(array(
'page_title' => 'General Settings',
'menu_title' => 'General',
'menu_slug' => 'general-settings'
));
acf_add_options_page(array(
'page_title' => 'Footer Settings',
'menu_title' => 'Footer',
'menu_slug' => 'footer-settings'
));
}
if( function_exists('acf_add_options_page') ) {
acf_add_options_page(array(
'page_title' => 'Theme General Settings',
'menu_title' => 'Theme Options',
'menu_slug' => 'theme-general-settings',
'capability' => 'edit_posts',
'redirect' => false,
'icon_url' => 'dashicons-laptop',
));
}