在命名空间中使用碳域

时间:2019-10-10 16:11:14

标签: namespaces composer-php carbon-fields

我正在使用WordPress框架,需要使用Carbon Fields。问题在于,所有内容都在lib目录中,然后分成更多目录,例如类,函数,短代码,插件等。然后将它们相应地命名为\ ThemeName \ Functions,\ ThemeName \ Plugins等。

从Carbonfields文档中说,将以下几行添加到根目录中的functions.php中

use Carbon_Fields\Container; use Carbon_Fields\Field;

但是如何在我的Plugins目录中使用Carbon Field?

当我尝试以下操作时,出现错误:

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

我希望能够将我所有的Carbon Fields代码都放入该文件中,但是由于它位于名称空间中,因此出现错误

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 :(得分:0)

哦,我刚刚弄清楚了,只需要添加__NAMESPACE__即可。 '\ funcion_name'到add_action https://wordpress.stackexchange.com/questions/284877/add-action-in-namespace-not-working这个答案对我有帮助。