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:
Héctor Delgado Durán
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.
F. Javier Carazo Gil
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.
Sergio
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
F. Javier Carazo Gil
Sergio, buenas, por desgracia ese código ya no funcionará porque ha cambiado el DOM en las últimas versiones de WooCommerce.
Sergio
Vaya, que pena … 🙁
Muchas Gracias de todas maneras
F. Javier Carazo Gil
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.