Categorías: ProgramaciónWordPress

Listar atributos y visibles por defecto en WooCommerce

Para los usuarios más avanzados WooCommerce, el metaplugin estándar de facto para la creación de tiendas virtuales sobre WordPress, el titular de la entrada ya debería sonarle de algo, de hecho es muy posible que esta modificación del comportamiento habitual les interese y se hayan enfrentado a esta limitación anteriormente.

¿Dónde está la limitación?

¿Echamos de menos disponer de todos los atributos de un producto de un solo vistazo? Cuando se inserta un nuevo producto o se modifica uno existente resulta muy engorroso a) añadir uno a uno todos los atributos del producto y b) poder acceder a ellos directamente ¿no sería más conveniente disponer de todos ellos de forma directa? Dicho de otra manera: listar atributos.

¿Realmente resulta necesario marcar atributo a atributo para indicar al sistema que deseamos mostrarlo desde el frontend? Del mismo modo, cuando editamos un producto, ya sea nuevo o existente, siempre hemos de indicar explícitamente que deseamos mostrarlo en la tienda, ¿por qué no íbamos a querer hacerlo?

Vamos a ello, listar atributos made easy

Bien, veamos como proporcionar de esa funcionalidad a nuestra instalación WordPress:

Podemos hacerlo a través del fichero functions.php del tema, a través de la creación de un plugin o usando inserciones de código que nos pueda proporcionar el tema o de un plugin para ese propósito. Como vía más directa, lo haremos a través del primer caso, editando mediante FTP o directamente a través del editor de WordPress dicho fichero y añadiendo las siguientes líneas:

function scripts_mostrar_marcar_atributos(){ ?>
<script type="text/javascript">
    jQuery(document).ready(function($) {
        $('.product_attributes > div').removeClass('closed').show();
        $('#product_attributes a.expand_all').click();
        if (!$("#product_attributes > div > div.woocommerce_attribute.wc-metabox.taxonomy.pa_tecnica-soporte > table > tbody > tr:nth-child(2) > td > label > input").is(':checked'))
                $("#product_attributes > div > div.woocommerce_attribute.wc-metabox.taxonomy.pa_tecnica-soporte > table > tbody > tr:nth-child(2) > td > label > input").click();
        if (!$("#product_attributes > div > div.woocommerce_attribute.wc-metabox.taxonomy.pa_agno > table > tbody > tr:nth-child(2) > td > label > input").is(':checked'))
                $("#product_attributes > div > div.woocommerce_attribute.wc-metabox.taxonomy.pa_agno > table > tbody > tr:nth-child(2) > td > label > input").click();
        if (!$("#product_attributes > div > div.woocommerce_attribute.wc-metabox.taxonomy.pa_autor> table > tbody > tr:nth-child(2) > td > label > input").is(':checked'))
                $("#product_attributes > div > div.woocommerce_attribute.wc-metabox.taxonomy.pa_autor> table > tbody > tr:nth-child(2) > td > label > input").click();
    });
</script>
<?php
}
add_action('admin_print_footer_scripts', 'scripts_mostrar_marcar_atributos');

¿Y como aplicarlo a mis atributos? Sólo tendrás que reemplazar pa_* por el nombre del atributo que hayas creado para tu producto.

Entonces ahora sí, podemos listar atributos y hacerlo visibles por defecto:

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

Francisco Javier Carazo Gil

Ver comentarios

  • Hola. Tiene muy buena pinta. Lo he probado con Woocomerce 2.6.14 y no funciona. esto trasteando a ver si veo que ha cambiado para solucionarlo. ¿Sabes si ha día de hoy esto debería funcionar tal como está? Gracias y un saludo.

    • Héctor, si te digo la verdad no lo sé.

      Tendría que probarlo, a lo mejor ha cambiado algo del DOM. Es muy posible.

      Si necesitas una adaptación a mano dinos y nos encargamos.

      • Hola,

        Lo estoy probando pero no funciona ... Lo he incluido tal y como esta en mi functions.php y he cambiado los pa_* por el slug de mis atributos ....

        ¿Podrias ayudarme? La version de Woocommerce es 3.1.1

        Muchas Gracias

        • Sergio, buenas, por desgracia ese código ya no funcionará porque ha cambiado el DOM en las últimas versiones de WooCommerce.

          • Sergio, buenas tardes, habría que adaptar la consulta sobre el DOM.

            A ver si encontramos orto método más correcto que no genere este problema.

Entradas recientes

¿Qué aporta la integración de Bizum y métodos similares en el proceso de pago?

El comercio electrónico español, que se encuentra en pleno crecimiento y transformación, vive actualmente un…

hace % días

Mejores addons para suscripciones WooCommerce

Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…

hace % días

Mejores addons para suscripciones WooCommerce

Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…

hace % días

Desarrollo de plugins a medida WordPress

El desarrollo de plugins a medida WordPress resuelve pagos, reservas y flujos propios con integración…

hace % días

Plugin RedSys WooCommerce: cobros sin errores

El plugin RedSys WooCommerce conecta tu tienda con el banco, reduce errores de cobro y…

hace % días

Cómo resolver un rechazo SIS en WordPress

Aprende a resolver rechazo SIS en WordPress: identifica el código, revisa RedSys, pedidos y firmas…

hace % días