2016-03-29 2 views
3

Ich versuche einzurichten Optionen Seite mit Erweiterte Custom Fields in WP.WP - Advanced Custom Fields: acf_add_options_page() existiert nicht

Was ich in functions.php Datei haben:

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

} 

Das Problem ist, dass function_exists('acf_add_options_page') kehrt false.

Scheint, dass diese Funktion nicht existiert, jedoch verwende ich die neueste Version von ACF.


Wenn ich versuche, acf_add_options_page(); zu verwenden:

ich folgendes Uncaught Error: Call to undefined function acf_add_options_page()


, wenn ich acf_add_options_page(); nicht zu verwenden, nur mit acf_add_options_sub_page():

erhalte ich die folgende Warnung (en)

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. ich einen Haken bin mit (versucht mit init, plugins_loaded und admin_init) auf functions.php die Funktionen zu laden:

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


    } 

    } 
+1

Ist es möglich, dass function.php Ihr ​​Thema ist vor der eigentlichen ACF Erweiterung geladen wird? Steht Ihre Funktion in einem Hook oder direkt in der Funktion.php? Wenn ja, hast du versucht, es in hook wie folgt zu verschieben: https: //codex.wordpress.org/Plugin_API/Action_Reference/plugins_loaded –

+0

Ich benutze einen Hook, versuchte init und admin_init, alles ist möglich Ich glaube, danke für die Referenz, nur versucht, einen Haken mit plugins_loaded zu verwenden und hat nicht funktioniert. – Vladimir

+1

Sind Sie in einem WP-Netzwerk? –

Antwort

1

Versuchen ohne add_action. Just do:

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

Hier ist, wie ich es bekam Arbeit:

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

ich ein ähnliches Problem hat, jedoch wurde ich den Code als Teil eines Must-Einsatz-Plugin läuft.

Das Problem dort ist, dass acf-Plugins nach mu-Plugins geladen werden, so dass die Funktion noch nicht existierte.

Ich habe die plugins_loaded Aktion verwendet, um es auszuführen, nachdem alle Plugins geladen wurden.

Hier ist mein Code:

// 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'); 
-1
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', 
    )); 
} 
+0

bitte erläutern Sie Ihre Antwort –