【问题标题】:WP - Advanced Custom Fields : acf_add_options_page() does not existWP - 高级自定义字段:acf_add_options_page() 不存在
【发布时间】:2016-07-17 08:51:54
【问题描述】:

我正在尝试在 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



ps 我正在使用 hook(尝试使用 initplugins_loadedadmin_init em>) 在functions.php 上加载函数:

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');


    }

    }

【问题讨论】:

  • 您的主题的function.php是否可能在实际的ACF扩展之前加载?您的functio_exists 是在钩子中还是直接在function.php 中?如果是这样,您是否尝试过像这样在挂钩中移动它:codex.wordpress.org/Plugin_API/Action_Reference/plugins_loaded
  • 我正在使用钩子,尝试了 init 和 admin_init,我相信一切皆有可能,感谢您的参考,只是尝试使用带有 plugins_loaded 的钩子并没有工作。
  • 你在 WP 网络上吗?
  • 不,我正在为 wp 创建一个主题。还是谢谢。
  • 您使用的是什么版本的 ACF?

标签: php wordpress advanced-custom-fields


【解决方案1】:

我遇到了类似的问题,但是我将代码作为必备插件的一部分运行。

问题是acf插件是在 mu-plugins之后加载的,所以这个功能还不存在。

我使用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' );

【讨论】:

    【解决方案2】:

    尝试不使用 add_action。做吧:

    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',
    ));
    ...
    }
    

    【讨论】:

      【解决方案3】:

      嗨试试这个$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/

      【讨论】:

        【解决方案4】:

        这是我的工作原理:

        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'
         ));
        }
        

        【讨论】:

          【解决方案5】:
          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',
              ));
          }
          

          【讨论】:

          • 请解释你的答案
          猜你喜欢
          • 2019-01-18
          • 2014-10-13
          • 2016-10-20
          • 1970-01-01
          • 2017-12-16
          • 1970-01-01
          • 2013-07-14
          • 2014-03-11
          • 2017-08-28
          相关资源
          最近更新 更多