【问题标题】:Elementor Repeater Control Label from a Select Control Label来自选择控件标签的 Elementor 中继器控件标签
【发布时间】:2022-01-20 20:43:51
【问题描述】:

我有一个 REPEATER 控件,它有一个用于选择 WordPress 页面的 SELECT 控件。我想确保转发器标签是页面标题。我的脚本返回一个 Javascript 对象而不是页面标题。这是我的代码:

` $page_list = \Core_Elementor_Extensions::core_get_pages();

    $page_list_json = json_encode($page_list);

    $repeater->add_control(
        'posts_pages',
        [
            'label' => esc_html__('Pages', 'core'),
            'type' => Controls_Manager::SELECT,
            'options' => $page_list,
            'label_block' => true,
            'multiple' => false,
        ]
    );

    $this->add_control(
        'core_page_list',
        [

            'label' => __('Content', 'core'),
            'type' => Controls_Manager::REPEATER,
            'fields' => $repeater->get_controls(),
            'title_field' => "<# "
                . "let labels = #>" . $page_list_json . "<# ; " // Now the labels are available to the javascript
                . "let key =#>" . '{{ posts_pages }}' . "<#  ;"
                . "let label = labels[key]; "
                . "#>"
                . "{{{ label }}}",
        ]
    );`

{{{ label }}} 返回{"11":"Page Title", "22":"Page Title 2"}88888 8888 实际上是the_field 值中的'{{ posts_pages }}',它试图将tp pass 作为KEY 来访问上面返回的Js 对象。

我不太熟悉 underscorejs 模板。

【问题讨论】:

    标签: javascript php underscore.js elementor underscore.js-templating


    【解决方案1】:

    这是有效的解决方案:

     //Use Json Encode to convert array or object to JSON representation which will be like a javascript object
     $page_list_json = json_encode($page_list); 
    //Get your array/object in my case pages
       $page_list_json = $page_list;
       $repeater->add_control(
            'posts_pages',
            [
                'label' => esc_html__('Pages', 'core'),
                'type' => Controls_Manager::SELECT,
                'options' => $page_list,
                'label_block' => true,
                'multiple' => false,
            ]
        );
    
      
    $this->add_control(
            'core_page_list',
            [
    
                'label' => __('Content', 'core'),
                'type' => Controls_Manager::REPEATER,
                'fields' => $repeater->get_controls(),
                'title_field' => "<# "
                    . "let labels = $page_list_json; " // Now the labels are available to the javascript
                    . "let label = labels[posts_pages]; "// Get the value of the selected page
                    . "#>"
                    . "{{{ label }}}",//Show the value at the repeater title section
    
            ]
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 2012-10-05
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      相关资源
      最近更新 更多