1

我正在使用 Carbon Fields 插件(不是作曲家)。我正在构建一个大型站点,并且将具有许多功能来将字段添加到许多不同的页面。我不喜欢有非常长的文件,这使得找到每一页的代码变得更加困难。如果一切都在主插件文件中,它工作正常。但是,如果我尝试使用require_once()其他include()包含 Carbon Fields 类的文件,则会收到错误消息:“找不到类容器”。

有没有办法让类在包含的文件中可用,而不是所有东西都必须在主文件中?我已经搜索了文档,但什么也找不到。

4

2 回答 2

0

终于为遇到问题的其他人解决了这个问题。每个需要 Carbon Fields 类的包含文件必须在文件开头具有以下内容:

require_once(WP_PLUGIN_DIR . '/carbon-fields/carbon-fields-plugin.php');

use Carbon_Fields\Container;
use Carbon_Fields\Field;

在此之后,您可以启动您的功能等。我在扩展插件文件上添加了一些额外的编码,以确保激活 Carbon Fields 插件以防止损坏。

于 2020-07-06T15:35:53.087 回答
0

您可以像这样直接在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,否则您将收到您提到的错误。

于 2021-08-08T20:07:50.003 回答