Pregunta sobre WC Fields Factory de Wordpress:

Solo se cumplió la primera regla de campo, las adicionales se ignoran / los campos siguen ocultos

Un usuario preguntó 👇

Estoy usando entradas de opción múltiple en una sola página de producto.

Si el cliente desea que el producto sea «enmarcado» o «enmarcado y montado», por ejemplo, se muestran opciones adicionales.

Hay dos reglas para este campo, pero un campo adicional solo se muestra cuando la primera regla es verdadera. Permanece oculto incluso cuando se cumplen las condiciones de la segunda regla.

He intentado esto con algunos campos seleccionados y, en todos los casos, solo se marca la primera regla, el resto se ignora.

gracias,

(@sarkparanjothi)

Hace 2 años, 3 meses

Debería utilizar un espectáculo de campo frontal u oculto. E intente obtener información sobre la condición cero de la regla de campos.

(@ Treeborn)

Hace 2 años, 3 meses

Gracias por su respuesta. Los tres campos seleccionados adicionales están ocultos al cargar. Deben divulgarse condicionalmente.

Hay tres reglas para el campo y probé diferentes combinaciones de «ocultar», «mostrar» y «nulo» para cada una de ellas. Consulte a continuación las reglas, el resultado esperado y el resultado real.

what I expect to see:
if select 1 = option a show select 2 (field rules: show select 2, hide select 3, hide select 4)
if select 1 = option b show select 3 (field rules: select 2 nil, show select 3, select 4 nil)
if select 1 = option c show select 4 (field rules: select 2 nil, select 3 nil, show select 4)

select 2, select 3 and select 4 are all hidden on load

what I actually see:
select 1 = option a, select 2 is shown (others are hidden)
select 1 = option b, select 3 and 4 are shown (2,4 should be hidden)
select 1 = option c, select 3 and 4 are shown (2,3 should be hidden)

what I expect to see:
if select 1 = option a show select 2 (field rules: show select 2, select 3 nil, select 4 nil)
if select 1 = option b show select 3 (field rules: select 2 nil, show select 3, select 4 nil)
if select 1 = option c show select 4 (field rules: select 2 nil, select 3 nil, show select 4)

select 2, select 3 and select 4 are all hidden on load

what I actually see:
select 1 = option a, select 2 is shown (others are hidden)
select 1 = option b, select 2,3,4 hidden (2 should be visible)
select 1 = option c, select 2,3,4 hidden (4 should be visible)

what I expect to see:
if select 1 = option a show select 2 (field rules: show select 2, hide select 3, hide select 4)
if select 1 = option b show select 3 (field rules: hide select 2, show select 3, hide select 4)
if select 1 = option c show select 4 (field rules: hide select 2, hide select 3, show select 4)

select 2, select 3 and select 4 are all hidden on load

what I actually see:
select 1 = option a, select 2 is shown (others are hidden)
select 1 = option b, select 3,4 visible (only 3 should be visible)
select 1 = option c, select 3,4 visible (only 4 should be visible)

what I expect to see:
if select 1 = option a show select 2 (field rules: show select 2, hide select 3, select 4 nil)
if select 1 = option b show select 3 (field rules: select 2 nil, show select 3, select 4 nil)
if select 1 = option c show select 4 (field rules: select 2 nil, select 3 nil, show select 4)

select 2, select 3 and select 4 are all hidden on load

what I actually see:
select 1 = option a, select 2 is shown (others are hidden)
select 1 = option b, select 3 visible
select 1 = option c, select 3 visible (only select 4 should be visible)

(@alcatraztours)

Hace 2 años, 3 meses

Estoy enfrentando el mismo problema.

(@discobrille)

Hace 2 años, 3 meses

El mismo problema aqui. No importa si los campos están ocultos o visibles durante la carga. Para más de una condición o dependencias más complejas, solo se aplica la primera condición.

Aprecio el buen y arduo trabajo que se dedica a este gran plugin. Bien pensado, muy claro y bien documentado. Por eso decidí usar este plugin.

Pero si realizo un acondicionamiento lógico después de horas de configurar los campos y personalizar los estilos, esa característica no necesariamente funciona bien. Especialmente si este plugin se ofrece a una comunidad de WordPress y una aplicación productiva.

Esta función esencial debe configurarse, luego puedo dar una calificación. No quiero perder mi tiempo con este buen plugin y usar otro en su lugar.

Esta respuesta fue modificada hace 2 años, 3 meses por.

(@discobrille)

Hace 2 años, 3 meses

Actualizar:

Antes de realizar más cambios en las características del producto con este plugin, primero probé la funcionalidad agregada.

El resultado (para mí) es que no puedo seguir usando WC Fields Factory.

Incluso la actualización del carrito de compras no funciona correctamente. Si elimino un elemento, la insignia se cuenta hacia atrás, pero si la página se actualiza o agrega otro elemento, los elementos eliminados vuelven a aparecer en el gráfico. También duplicados. Debido a limitaciones de tiempo, no puedo ofrecer aquí un informe detallado sobre la reproducción.

Después de apagar el plugin, la administración del carrito de compras funciona correctamente.

Adiós por ahora.

Esta respuesta fue modificada hace 2 años, 3 meses por.

(@ Treeborn)

Hace 2 años, 3 meses

Para actualizar @sarkparanjothi, el problema aparece en el código jQuery generado por el método field_rules_script_render en la clase de transacción.

Aquí está el código generado:

 var $ = jQuery;
													jQuery(document).ready(function(){ 
														jQuery(document).on("change", "[data-has_field_rules=yes]", function(){
															var field_name = jQuery(this).attr( "name" ), clone_index = false ? field_name.slice( field_name.lastIndexOf("_"),  field_name.length ) : "";if(false){}else if(jQuery(this).attr("name") == "include_names"+clone_index+"" ){
    							if( jQuery(this).val() == "yes" ){jQuery( "[name='select_test"+clone_index+"']" ).closest(".wccpf_fields_table").show().removeClass("wcff_is_hidden_from_field_rule");} else {jQuery( "[name='select_test"+clone_index+"']" ).closest(".wccpf_fields_table").hide().addClass("wcff_is_hidden_from_field_rule");} }var field_name = jQuery(this).attr( "name" ), clone_index = false ? field_name.slice( field_name.lastIndexOf("_"),  field_name.length ) : "";if(false){}else if(jQuery(this).attr("name") == "select_1"+clone_index+"" ){
    							if( jQuery(this).val() == "a" ){jQuery( "[name='select_2"+clone_index+"']" ).closest(".wccpf_fields_table").show().removeClass("wcff_is_hidden_from_field_rule");} else {jQuery( "[name='select_2"+clone_index+"']" ).closest(".wccpf_fields_table").hide().addClass("wcff_is_hidden_from_field_rule");} }else if(jQuery(this).attr("name") == "portrait_size"+clone_index+"" ){
    							if( jQuery(this).val() == "b" ){jQuery( "[name='select_3"+clone_index+"']" ).closest(".wccpf_fields_table").show().removeClass("wcff_is_hidden_from_field_rule");} else {jQuery( "[name='select_3"+clone_index+"']" ).closest(".wccpf_fields_table").hide().addClass("wcff_is_hidden_from_field_rule");} }else if(jQuery(this).attr("name") == "portrait_size"+clone_index+"" ){
    							if( jQuery(this).val() == "c" ){jQuery( "[name='select_4"+clone_index+"']" ).closest(".wccpf_fields_table").show().removeClass("wcff_is_hidden_from_field_rule");} else {jQuery( "[name='select_4"+clone_index+"']" ).closest(".wccpf_fields_table").hide().addClass("wcff_is_hidden_from_field_rule");} }});
										});
									

Todas las opciones / condiciones que verificamos para la entrada de retorno contienen si hay otras declaraciones:

} else if (jQuery(this).attr("name") == "select_1" + clone_index + "") {

Debido a que la condición «select_1» es verdadera para la primera verificación, no se llamará «otro» si no.

Colocar las condiciones / valores en una declaración ‘sí’ solo da el comportamiento de ocultación / demostración esperado para mi caso.

La salida ajustada manualmente es la siguiente:

var $ = jQuery;
 jQuery(document).ready(function() {
   
     jQuery(document).on("change", "[data-has_field_rules=yes]", function() {
       
       
         var field_name = jQuery(this).attr("name"),
             clone_index = false ? field_name.slice(field_name.lastIndexOf("_"), field_name.length) : "";
         if (false) {} else if (jQuery(this).attr("name") == "include_names" + clone_index + "") {
             if (jQuery(this).val() == "yes") {
                 jQuery("[name='select_test" + clone_index + "']").closest(".wccpf_fields_table").show().removeClass("wcff_is_hidden_from_field_rule");
             } else {
                 jQuery("[name='select_test" + clone_index + "']").closest(".wccpf_fields_table").hide().addClass("wcff_is_hidden_from_field_rule");
             }
         }
       
         var field_name = jQuery(this).attr("name"),
             clone_index = false ? field_name.slice(field_name.lastIndexOf("_"), field_name.length) : "";
         if (false) {} else if (jQuery(this).attr("name") == "select_1" + clone_index + "") {
             if (jQuery(this).val() == "a") {
                 jQuery("[name='select_2" + clone_index + "']").closest(".wccpf_fields_table").show().removeClass("wcff_is_hidden_from_field_rule");
             } else {
                 jQuery("[name='select_2" + clone_index + "']").closest(".wccpf_fields_table").hide().addClass("wcff_is_hidden_from_field_rule");
             }
        
             if (jQuery(this).val() == "b") {
                 jQuery("[name='select_3" + clone_index + "']").closest(".wccpf_fields_table").show().removeClass("wcff_is_hidden_from_field_rule");
             } else {
                 jQuery("[name='select_3" + clone_index + "']").closest(".wccpf_fields_table").hide().addClass("wcff_is_hidden_from_field_rule");
             }
         
             if (jQuery(this).val() == "c") {
                 jQuery("[name='select_4" + clone_index + "']").closest(".wccpf_fields_table").show().removeClass("wcff_is_hidden_from_field_rule");
             } else {
                 jQuery("[name='select_4" + clone_index + "']").closest(".wccpf_fields_table").hide().addClass("wcff_is_hidden_from_field_rule");
             }
         }
     
     
     });
 
 
 });

Cuando me encontré con la consola para una prueba, di el comportamiento esperado de la visibilidad de las entradas seleccionadas.

Entonces, creo que el código que genera la salida de jQuery (en la clase negociada) debe ajustarse para que no convierta cada condición / regla de campo en una regla ‘otro si’, una para todas las reglas para un campo en particular.

(@sarkparanjothi)

Hace 2 años, 3 meses

hola @treeborn, gracias por tu breve explicación.

Hola @treeborn, pero aún así, si no estoy muy confundido, ¿puedes compartir la captura de pantalla de tu campo de administración?

Gracias

Esta respuesta fue modificada hace 2 años, 3 meses por.

(@sarkparanjothi)

Hace 2 años, 3 meses

Hola @treeborn, cambié la regla de campo a lo que explicas en mi copia de trabajo. Espero que @treeborn esté cerca. así que espere otra redirección wcff (3.0.2)

(@ Treeborn)

Hace 2 años, 3 meses

Gracias por ver esto, espero con ansias el próximo lanzamiento.

(@sarkparanjothi)

Hace 2 años, 3 meses

Hola @treeborn, actualice wcff v (3.0.2)

(@treeborn)

Hace 2 años, 3 meses

¡Muchas gracias! Actualicé y las reglas de campo ahora son las esperadas.

Gracias de nuevo.

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *