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

Alberto Hornero Luque

Hace poco fundó junto a Javier Carazo esta startup, Codection. Puedes seguir sus updates en @ahornero y LinkedIn. Contínuamente relacionado con el procesamiento de imágenes y el análisis numérico, se encuentra actualmente trabajando como Ingeniero Técnico en el laboratorio de Métodos Cuantitativos de Teledetección del CSIC. Administrador y blogger del portal Linux Hispano centra sus intereses en tecnologías abiertas, desarrollos en la nube y GNU/Linux.

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

RedSys para Contact Form 7 ahora acepta preautorizaciones

RedSys aparte de los pagos normales, llamados autorizaciones, acepta una variedad de operaciones: desde autorizaciones…

hace % días

Ordenar productos de forma diferente por cada categoría en WooCommerce

WooCommerce permite ordenar los productos de una forma nativa, para poder presentar primero los que…

hace % días

Evitar que se instalen los temas por defecto de WordPress cada vez que actualizas el núcleo

Cada vez que hay una actualización grande del núcleo WordPress, por defecto WordPress te instala…

hace % días

Pantalla LCD: ¿qué es?

Una pantalla LCD es una pantalla delgada y hecha de cristal líquido. Se usa en…

hace % días

Flujos de pago con Gravity Flow y RedSys

De todos los plugins que existen para Gravity Forms, que son numerosos porque la propia…

hace % días

CMS, ¿Qué es y qué ventajas tiene?

Un CMS, como WordPress, facilita la creación y gestión de contenido en la web, sin…

hace % días