在包含的插件文件中使用 Carbon Fields
Use Carbon Fields in an included plugin file
我正在使用 Carbon Fields 插件(不是 composer)。我正在构建一个大型站点,并且将有许多功能可以将字段添加到许多不同的页面。我不喜欢非常长的文件,这样很难找到每个页面的代码。如果一切都在主插件文件中,那么它工作正常。但是如果我尝试 require_once()
或 include()
另一个包含 Carbon Fields 类 的文件,我会得到错误:"class Container not found"。
有没有办法让 类 在包含的文件中可用,而不是所有内容都必须在主文件中?我已经搜索了文档,但找不到任何相关内容。
终于为其他人运行解决了这个问题。每个需要碳字段 类 的包含文件必须在文件开头包含以下内容:
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/
替换为您的文件夹结构即可。
我猜你真正的问题是在调用 Field::make
之前没有调用 Container::make
以及你收到 class 错误的原因。
换句话说,您的包含文件中会包含这样的内容:
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
class 必须在 Field
class 之前调用,否则你会得到你提到的错误。
我正在使用 Carbon Fields 插件(不是 composer)。我正在构建一个大型站点,并且将有许多功能可以将字段添加到许多不同的页面。我不喜欢非常长的文件,这样很难找到每个页面的代码。如果一切都在主插件文件中,那么它工作正常。但是如果我尝试 require_once()
或 include()
另一个包含 Carbon Fields 类 的文件,我会得到错误:"class Container not found"。
有没有办法让 类 在包含的文件中可用,而不是所有内容都必须在主文件中?我已经搜索了文档,但找不到任何相关内容。
终于为其他人运行解决了这个问题。每个需要碳字段 类 的包含文件必须在文件开头包含以下内容:
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/
替换为您的文件夹结构即可。
我猜你真正的问题是在调用 Field::make
之前没有调用 Container::make
以及你收到 class 错误的原因。
换句话说,您的包含文件中会包含这样的内容:
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
class 必须在 Field
class 之前调用,否则你会得到你提到的错误。