WP-高级自定义字段:acf_add_options_page()不存在


WP - Advanced Custom Fields : acf_add_options_page() does not exist

我正试图在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(尝试使用initplugins_loadedadmin_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',
    ));
}