如何在 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
default
是Select2 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();
更新:
根据官方文档,REPEATER
control 在默认情况下的工作方式如下:
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 控件上指定默认值或几个值?的主要内容,如果未能解决你的问题,请参考以下文章