我正在使用 Carbon Fields 插件(不是作曲家)。我正在构建一个大型站点,并且将具有许多功能来将字段添加到许多不同的页面。我不喜欢有非常长的文件,这使得找到每一页的代码变得更加困难。如果一切都在主插件文件中,它工作正常。但是,如果我尝试使用require_once()
其他include()
包含 Carbon Fields 类的文件,则会收到错误消息:“找不到类容器”。
有没有办法让类在包含的文件中可用,而不是所有东西都必须在主文件中?我已经搜索了文档,但什么也找不到。
我正在使用 Carbon Fields 插件(不是作曲家)。我正在构建一个大型站点,并且将具有许多功能来将字段添加到许多不同的页面。我不喜欢有非常长的文件,这使得找到每一页的代码变得更加困难。如果一切都在主插件文件中,它工作正常。但是,如果我尝试使用require_once()
其他include()
包含 Carbon Fields 类的文件,则会收到错误消息:“找不到类容器”。
有没有办法让类在包含的文件中可用,而不是所有东西都必须在主文件中?我已经搜索了文档,但什么也找不到。
终于为遇到问题的其他人解决了这个问题。每个需要 Carbon Fields 类的包含文件必须在文件开头具有以下内容:
require_once(WP_PLUGIN_DIR . '/carbon-fields/carbon-fields-plugin.php');
use Carbon_Fields\Container;
use Carbon_Fields\Field;
在此之后,您可以启动您的功能等。我在扩展插件文件上添加了一些额外的编码,以确保激活 Carbon Fields 插件以防止损坏。
您可以像这样直接在functions.php中包含您的文件(安装插件后):
require_once get_template_directory() . '/assets/inc/your-file.php';
只需替换/assets/inc/
为您的文件夹结构即可。
我猜您的真正问题不是在调用Container::make
之前调用 aField::make
以及您收到类错误的原因。
换句话说,类似这样的内容会出现在您的包含文件中:
use Carbon_Fields\Container;
use Carbon_Fields\Field;
Container::make( 'post_meta', __( 'Page Options', 'crb' ) )
->where( 'post_type', '=', 'page' ) // only show our new fields on pages
->add_fields( array(
Field::make( 'complex', 'slider', 'Slides' )
->set_layout( 'tabbed-horizontal' )
->add_fields( array(
Field::make( 'text', 'slider_title', __( 'Slide Title' ) ),
Field::make( 'image', 'slider_media', __( 'Slide Media' ) )
->set_type( array( 'image', 'video' ) )
) ),
) );
Container
必须在上课之前调用该课程Field
,否则您将收到您提到的错误。