Использование углеродных полей в пространстве имен - PullRequest
0 голосов
/ 10 октября 2019

Я использую WordPress Framework и мне нужно использовать Carbon Fields. Проблема в том, что все находится в каталоге lib, а затем разделено на несколько каталогов, таких как классы, функции, шорткоды, плагины и т. Д., Которые затем располагаются в пространстве имен соответственно \ ThemeName \ Functions, \ ThemeName \ Plugins и т. Д.

В документации Carbonfields говорится, что добавьте следующие строки в functions.php в корневом каталоге

use Carbon_Fields\Container; use Carbon_Fields\Field;

Но как я могу использовать Carbon Fields из моего каталога плагинов?

Когда я пытаюсь выполнить следующее, я получаю сообщение об ошибке:

namespace \ThemeName\Plugins;

use Carbon_Fields\Container;
use Carbon_Fields\Field;

add_action( 'carbon_fields_register_fields', 'crb_attach_theme_options' );
function crb_attach_theme_options() {
    Container::make( 'theme_options', __( 'Theme Options' ) )
        ->add_fields( array(
            Field::make( 'text', 'crb_text', 'Text Field' ),
        ) );
}

add_action( 'after_setup_theme', 'crb_load' );
function crb_load() {
   echo get_stylesheet_directory() . '/vendor/autoload.php';
    require_once( get_stylesheet_directory() . '/vendor/autoload.php' );
    \Carbon_Fields\Carbon_Fields::boot();
}

Я хочу иметь возможность поместить весь свой код углеродных полей в этот файл, но, находясь в пространстве имен, яполучить ошибку

Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'crb_load' not found or invalid function name in C:\xampp64\htdocs\sophie\wp-includes\class-wp-hook.php on line 286

В противном случае, если я удаляю пространство имен, оно работает без проблем.

1 Ответ

0 голосов
/ 10 октября 2019

О, я только что понял это, просто нужно добавить __NAMESPACE__. '\ funcion_name' для add_action https://wordpress.stackexchange.com/questions/284877/add-action-in-namespace-not-working этот ответ мне помог.

...