Widgets

Widgets container用于为您的主题创建自定义小部件。 每个小部件都被定义为一个 PHP 类,它:

  1. 扩展了 \Carbon_Fields\Widget 类(参考(打开新窗口))
  2. 定义构造函数 __construct()front_end() 方法

构造函数必须调用方法 setup( $widget_id, $title, $description, $fields, $classname = '' ),其中:

参数 描述
$widget_id 小组件的 ID。请注意,它将自动附加'carbon_fields_'
$title 小部件的标题,在后端使用
$description 在后端中使用的小部件的描述
$fields 字段数组
$classname (可选) 为小组件提供自定义类属性。

该方法负责在前端呈现您的小部件。 在这里,您可以通过 front_end( $args, $instance )$instance 访问为您在构造函数中定义的字段保存的所有值

定义类后,在 widgets_init 期间注册新小部件很重要

use Carbon_Fields\Widget;
use Carbon_Fields\Field;

class ThemeWidgetExample extends Widget {
    // Register widget function. Must have the same name as the class
    function __construct() {
        $this->setup( 'theme_widget_example', 'Theme Widget - Example', 'Displays a block with title/text', array(
            Field::make( 'text', 'title', 'Title' )->set_default_value( 'Hello World!') ,
            Field::make( 'textarea', 'content', 'Content' )->set_default_value( 'Lorem Ipsum dolor sit amet' )
        ) );
    }
    
    // Called when rendering the widget in the front-end
    function front_end( $args, $instance ) {
        echo $args['before_title'] . $instance['title'] . $args['after_title'];
        echo '<p>' . $instance['content'] . '</p>';
    }
}

function load_widgets() {
    register_widget( 'ThemeWidgetExample' );
}

你应该在你的WordPress主题functions.php中添加以下钩子:

add_action( 'widgets_init', 'load_widgets' );

您可以通过在自定义小部件类的开头添加定义来设置小部件的控制选项(如宽度)。 示例:$form_options

protected $form_options = array(
    'width' => 500
);

如果您想禁用来自侧边栏的默认小部件包装器,您可以在小部件的方法中禁用。 示例:$this->print_wrappers__construct()

function __construct() {
    $this->setup( 'widget_id', 'Widget Title', __('Widget Description'), array(
        Field::make( 'text', 'title', 'Title' )->set_default_value( 'Hello World!' ),
    ) );

    $this->print_wrappers = false;
}