如何在 Elementor SELECT2 控件上指定默认值或几个值?

Posted

技术标签:

【中文标题】如何在 Elementor SELECT2 控件上指定默认值或几个值?【英文标题】:How to specify a default value, or couple of values on an Elementor SELECT2 control? 【发布时间】:2021-07-05 06:11:15 【问题描述】:

使用 WordPress 在 Elementor 上工作,有人知道如何在 SELECT2 控件上指定默认值或默认值数组吗?

这里是控件的代码:

$this->add_control( '27_listing_types', [
    'label' => __( 'Listing Types', 'my-listing' ),
    'type' => \Elementor\Controls_Manager::REPEATER,
    'fields' => [ [
          'name' => 'type',
          'label' => __( 'Select Listing Type', 'my-listing' ),
          'type' => \Elementor\Controls_Manager::SELECT2,
          'options' => $listing_types,
          'default' => '',
          'label_block' => true,
    ] ],
    'title_field' => sprintf(
        ' (%s)[type] || "n/a" ',
        trim( wp_json_encode( $listing_types ), '"' )
    ),
] );

其中$listing_types 是一个数组: "member-b2b": "Member-B2B", "member-b2c": "Member-B2C"

感谢任何可以提供帮助的人!

编辑: 根据 Jasie 的回答尝试添加默认值后,它的作用如下:

我仍然需要按下“添加元素”。

Screenshot: empty listing types list

然后它添加一个带有预选值“Membre-B2B”的元素,这是我在控件代码中指定的值,但是这个选定的项目不起作用并且它不提供小部件:

Screenshot: after adding an element with default value

应该这样才能正常工作:

Screenshot: after adding an element and manually selecting the value

编辑:

After setting parameter 'multiple' => true,

编辑:

我终于让它工作了,这是正确的代码:

$this->add_control( '27_listing_types', [
    'label' => __( 'Listing Types', 'my-listing' ),
    'type' => \Elementor\Controls_Manager::REPEATER,
    'fields' => [ [
        'name' => 'type',
        'label' => __( 'Select Listing Type', 'my-listing' ),
        'type' => \Elementor\Controls_Manager::SELECT2,

        'options' => [
            'membre-b2b' => 'Membre-B2B',
            'membre-b2c' => 'Membre-B2C',
        ],
        
        'label_block' => true,
    ] ],
    'default' => [
        [
            'type' => 'membre-b2b',
        ],
        [
            'type' => 'membre-b2c',
        ]
    ],
] );

这确实创建了一个带有两个默认值数组的中继器控件。

感谢您的帮助!

【问题讨论】:

它是否有效,如果您使用没有 REPEATER 控制的 SELECT2 控制,单独运行?你试过吗? 【参考方案1】:

根据官方文档:https://developers.elementor.com/elementor-controls/select2-control/#Arguments

defaultSelect2 Control 的一个参数:

string|array 选定的选项键,或选定值的数组 如果 multiple 设置为 true。

示例来自https://developers.elementor.com/elementor-controls/select2-control/#Usage:

$this->add_control(
    'show_elements',
        [
            'label' => __( 'Show Elements', 'plugin-domain' ),
            'type' => \Elementor\Controls_Manager::SELECT2,
            'multiple' => true,
            'options' => [
                'title'  => __( 'Title', 'plugin-domain' ),
                'description' => __( 'Description', 'plugin-domain' ),
                'button' => __( 'Button', 'plugin-domain' ),
            ],
            'default' => [ 'title', 'description' ],
        ]
);

$this->end_controls_section();

更新: 根据官方文档,REPEATERcontrol 在默认情况下的工作方式如下: https://developers.elementor.com/elementor-controls/repeater-control/#Usage

首先创建 SELECT2 控件,然后通过以下操作将其添加到中继器:'fields' => $repeater->get_controls(),。另见default 参数:

$this->add_control(
    'list',
    [
        'label' => __( 'Repeater List', 'plugin-domain' ),
        'type' => \Elementor\Controls_Manager::REPEATER,
        'fields' => $repeater->get_controls(),
        'default' => [
                [
                    'list_title' => __( 'Title #1', 'plugin-domain' ),
                    'list_content' => __( 'Item content. Click the edit button to change this text.', 'plugin-domain' ),
                ],
                [
                    'list_title' => __( 'Title #2', 'plugin-domain' ),
                    'list_content' => __( 'Item content. Click the edit button to change this text.', 'plugin-domain' ),
                ],
        ],
        'title_field' => ' list_title ',
    ]
);

【讨论】:

感谢您的帮助,但不幸的是,这并没有按预期工作。我仍然必须按下按钮“添加 en 元素”,然后它添加一个具有“半”预选值的元素(如果没有,很难分辨截图) 请编辑您的问题并添加屏幕截图:-) "如果 multiple 设置为 true,则为选定值的数组"。你设置参数'multiple' => true,了吗? 是的,没有根本变化,请看截图 看到了你的最后一次更新,但不幸的是我什么都做不了:(实际上我刚刚意识到这个 Elementor 控件是一个带有 select2 字段的中继器控件。

以上是关于如何在 Elementor SELECT2 控件上指定默认值或几个值?的主要内容,如果未能解决你的问题,请参考以下文章

在asp.net服务器控件上的Select2?

php 将自定义控件添加到现有Elementor窗口小部件

如何使用css更改select2控件的字体颜色

为啥 select2 没有用最新数据填充控件?

如何隐藏select2上的溢出?

如何使用 elementor 更改文本的颜色和大小