Elementor 开发者文档

title: "常规控件" post_status: publish comment_status: open taxonomy: category: - elementor-developers-docs post_tag: - Editor Controls - Src - Repos


常规控件

常规控件是基础构建模块,允许用户为不同类型的输入字段(文本、数字、颜色、图像、图标等)设置不同的值。常规控件通过 add_control() 方法添加。

常规控件结构

使用以下代码添加控件:

$this->add_control(
    'control-name',
    [
        'label' => esc_html__( '标题', 'textdomain' ),
        'type' => \Elementor\Controls_Manager::TEXT,
    ]
);

控制参数

每个控件包含以下关键参数:

示例

文本控件

在下面的示例中,我们将添加一个在 control_text 类中定义的简单文本控件,该控件允许用户保存一个简单的字符串。该控件将设置一个占位符:

```php {13-20} class Elementor_Test_Widget extends \Elementor\Widget_Base {

protected function register_controls(): void {

    $this->start_controls_section(
        'content_section',
        [
            'label' => esc_html__( 'Content', 'textdomain' ),
            'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
        ]
    );

    $this->add_control(
        'title',
        [
            'type' => \Elementor\Controls_Manager::TEXT,
            'label' => esc_html__( 'Title', 'textdomain' ),
            'placeholder' => esc_html__( 'Enter your title', 'textdomain' ),
        ]
    );

    $this->end_controls_section();

}

}

### 数字控件

在下面的示例中,我们将添加一个在 `Control_Number` 类中定义的简单数字控件,它将允许用户保存数字:

```php {13-24}
class Elementor_Test_Widget extends \Elementor\Widget_Base {

    protected function register_controls(): void {

        $this->start_controls_section(
            'content_section',
            [
                'label' => esc_html__( 'Content', 'textdomain' ),
                'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
            ]
        );

        $this->add_control(
            'size',
            [
                'type' => \Elementor\Controls_Manager::NUMBER,
                'label' => esc_html__( 'Size', 'textdomain' ),
                'placeholder' => '0',
                'min' => 0,
                'max' => 100,
                'step' => 1,
                'default' => 50,
            ]
        );

        $this->end_controls_section();

    }

}

选择控件

另一个简单的例子是 Control_Select 类,它允许用户选择预定义的字段:

```php {13-25} class Elementor_Test_Widget extends \Elementor\Widget_Base {

protected function register_controls(): void {

    $this->start_controls_section(
        'content_section',
        [
            'label' => esc_html__( 'Content', 'textdomain' ),
            'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
        ]
    );

    $this->add_control(
        'open_lightbox',
        [
            'type' => \Elementor\Controls_Manager::SELECT,
            'label' => esc_html__( 'Lightbox', 'textdomain' ),
            'options' => [
                'default' => esc_html__( 'Default', 'textdomain' ),
                'yes' => esc_html__( 'Yes', 'textdomain' ),
                'no' => esc_html__( 'No', 'textdomain' ),
            ],
            'default' => 'no',
        ]
    );

    $this->end_controls_section();

}

}

### 选择控件

选择控件是下拉选择控件的改进版本。`Control_Choose` 类允许用户选择预定义的字段,但每个选项的组件都带有图标样式。

```php {13-34}
class Elementor_Test_Widget extends \Elementor\Widget_Base {

    protected function register_controls(): void {

        $this->start_controls_section(
            'content_section',
            [
                'label' => esc_html__( 'Content', 'textdomain' ),
                'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
            ]
        );

        $this->add_control(
            'alignment',
            [
                'type' => \Elementor\Controls_Manager::CHOOSE,
                'label' => esc_html__( 'Alignment', 'textdomain' ),
                'options' => [
                    'left' => [
                        'title' => esc_html__( 'Left', 'textdomain' ),
                        'icon' => 'eicon-text-align-left',
                    ],
                    'center' => [
                        'title' => esc_html__( 'Center', 'textdomain' ),
                        'icon' => 'eicon-text-align-center',
                    ],
                    'right' => [
                        'title' => esc_html__( 'Right', 'textdomain' ),
                        'icon' => 'eicon-text-align-right',
                    ],
                ],
                'default' => 'center',
            ]
        );

        $this->end_controls_section();

    }

}

滑块控件

另一个有用的控件是 Control_Slider,它显示一个可拖动的范围滑块:

```php {13-30} class Elementor_Test_Widget extends \Elementor\Widget_Base {

protected function register_controls(): void {

    $this->start_controls_section(
        'content_section',
        [
            'label' => esc_html__( 'Content', 'textdomain' ),
            'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
        ]
    );

    $this->add_control(
        'font_size',
        [
            'type' => \Elementor\Controls_Manager::SLIDER,
            'label' => esc_html__( 'Size', 'textdomain' ),
            'size_units' => [ 'px', 'em', 'rem', 'custom' ],
            'range' => [
                'px' => [
                    'min' => 1,
                    'max' => 200,
                ],
            ],
            'default' => [
                'unit' => 'px',
                'size' => 20,
            ],
        ]
    );

    $this->end_controls_section();

}

}

### 颜色控制

`Control_Color` 是较为流行的控件之一,它允许用户选择颜色:

```php {13-20}
class Elementor_Test_Widget extends \Elementor\Widget_Base {

    protected function register_controls(): void {

        $this->start_controls_section(
            'content_section',
            [
                'label' => esc_html__( 'Content', 'textdomain' ),
                'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
            ]
        );

        $this->add_control(
            'text_color',
            [
                'type' => \Elementor\Controls_Manager::COLOR,
                'label' => esc_html__( 'Text Color', 'textdomain' ),
                'default' => '#fefefe',
            ]
        );

        $this->end_controls_section();

    }

}

媒体控件

最后,对于高级用户,您可以使用 Control_Media 从 WordPress 媒体库中选择图片:

```php {13-22} class Elementor_Test_Widget extends \Elementor\Widget_Base {

protected function register_controls(): void {

    $this->start_controls_section(
        'content_section',
        [
            'label' => esc_html__( 'Content', 'textdomain' ),
            'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
        ]
    );

    $this->add_control(
        'image',
        [
            'type' => \Elementor\Controls_Manager::MEDIA,
            'label' => esc_html__( 'Choose Image', 'textdomain' ),
            'default' => [
                'url' => \Elementor\Utils::get_placeholder_image_src(),
            ]
        ]
    );

    $this->end_controls_section();

}

} ```