Widgets
container用于为您的主题创建自定义小部件。 每个小部件都被定义为一个 PHP 类,它:
- 扩展了
\Carbon_Fields\Widget
类(参考(打开新窗口)) - 定义构造函数
__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;
}