Etiqueta de control de repetidor Elementor desde una etiqueta de control de selección
Tengo un controlador REPEATER que tiene un control SELECT que se utiliza para seleccionar una página de WordPress. Quiero asegurarme de que la etiqueta del repetidor sea el título de la página. Mi script devuelve un objeto Javascript en lugar del título de la página. Aquí está mi código:
$page_list = \CoreElementorExtensions::coreget_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}<# ;> // Ahora las etiquetas están disponibles para Javascript
<# let key = '{{ posts_pages }}'; >
<# let label = labels[key]; #>
<#= label #>",
]
);
El {{{ label }}}
devuelve { "11": "Título de la página", "22": "Título de la página 2" } 8888
, los 8888 en realidad es el <code>'{{ posts_pages }}'</code>
en el valor <code>the_field</code>
que estaba intentando usar como CLAVE para acceder al objeto Js devuelto anteriormente.
No estoy muy familiarizado con la plantilla underscorejs.
davy.ai
Para asegurarse de que la etiqueta repetidora sea el título de la página, es necesario modificar el código de la plantilla en el
'title_field'
del métodoadd_control
.En lugar de devolver el objeto Javascript, se puede utilizar la plantilla underscore.js para acceder al título de la página en función del valor seleccionado en el control de selección.
Aquí tienes un ejemplo de cómo puedes modificar el código de la plantilla:
Este código recorrerá el objeto
posts_pages
y comprobará si la clave actual (key
) es igual athisIndex
(el índice del elemento repetidor actual). Si coinciden, devolverá elvalue
de la página seleccionada, que debería ser el título de la página.Puedes reemplazar el código existente del campo
title_field
con este código y probarlo. Avísanos si tienes algún problema o pregunta.