La solución de problemas es una parte normal del funcionamiento de un sitio web, pero a veces los problemas pueden volverse un poco extraños. Aquí hay un problema que surgió recientemente y la solución que pudimos encontrar para él:
Índice
- El problema: albaranes de PDF y metadatos faltantes en WooCommerce
- La solución: cómo evitar la falta de metadatos en los albaranes en WooCommerce
- Problema Resuelto: Modificaciones de Plantilla
El problema: albaranes de PDF y metadatos faltantes en WooCommerce
Recientemente, recibí un extraño informe de problema en mi escritorio: un cliente decía que WooCommerce PDF Invoices & Packing Slips estaba causando problemas a su equipo de almacén. El problema fue hasta el punto de que tenían errores de cumplimiento, productos devueltos y más. El albarán también solo enumeraba uno de los dos atributos del producto y el personal del almacén necesitaba ambos para seleccionar los productos correctamente.
Esto fue sorprendente, ya que las facturas en PDF y los albaranes generalmente se consideran un complemento imprescindible para cualquier compilación de Woocommerce que se envíe internamente solo por lo útil que es. Los comprobantes de empaque lo ayudarán a empacar las cajas más rápidamente, reducir los errores de empaque, comunicar profesionalismo a sus clientes y cortar "¿Se supone que lo que hay en la caja es lo que hay en la caja?" problemas de raíz. El tipo de descuido que causaría problemas con este complemento parecía diferente a ellos y muy inusual. Pero, ¿fue el complemento o fue WooCommerce? Eso es lo que necesitaba averiguar, ¡y rápido!
Un escenario hipotético para una situación real
Como cortesía a nuestro cliente, no usaré nombres de productos reales, atributos de productos reales, etc. Si bien el escenario presentado aquí puede ser hipotético, la situación es muy real y es una fuente de frustración. !
A modo de ejemplo, profundicemos en uno de mis pasatiempos fuera de la oficina, los juegos de guerra de mesa, y supongamos que el producto en cuestión es un gran tapete de "terreno base" con dos atributos:
- Atributo 1: “Patrón”, con opciones para Bosque, Desierto e Invierno
- Atributo 2: “Tamaño”, con opciones para 48″x72″ o 60″x96″
Supongamos también que Winter es un patrón completamente nuevo, algo que el propietario de nuestra tienda está muy feliz de llamar la atención en el título del producto y actualiza el nombre a "Tapete de juegos de guerra gigante, ahora disponible en terreno de invierno". Nada demasiado fuera de lo común, ¿verdad? Y, sin embargo, eso es todo lo que se necesita para que ocurran los problemas.
El problema surge cuando un Wargamer ansioso hace un pedido del nuevo tapete de invierno. En este escenario, el albarán se vería así:
El atributo de tamaño aparece en la lista, pero el atributo de patrón no. ¡Eso no es bueno!
Descargo de responsabilidad sobre los SKU únicos
Naturalmente, la forma ideal de manejar situaciones como esta desde el punto de vista del empleado del almacén es que cada variante tenga su propio SKU único. Desafortunadamente, las realidades del cumplimiento no siempre lo permiten, especialmente para los revendedores que están obligados a usar los SKU establecidos por sus proveedores. Además, desde el punto de vista del cliente, por lo general no conocerán sus SKU, por lo que una lista de todas las elecciones que han hecho es beneficiosa para el cliente final, incluso en los casos en que no es beneficiosa para el personal de cumplimiento. .
El descubrimiento: por qué faltaban metadatos en los albaranes
Al profundizar en el código fuente del complemento Facturas en PDF y albaranes, encontré este fragmento en /templates/simple/packing-slip.php y /templates/simple/invoice.php:
type, $item, $this->order ); ?>
En la línea 2 es el culpable furtivo. Aspecto inocuo, sin duda, pero usando el gancho justo encima para ejecutar experimentos, descubrí que la clave de matriz 'meta' en un artículo de pedido contiene la misma información que obtendría llamando a get_formatted_metadata() en el artículo de pedido en sí. Aunque esta era información útil, también significaba que no iba a encontrar respuestas en facturas en PDF y albaranes y tendría que profundizar más.
En lo profundo de las entrañas de WooCommerce, casi en los cimientos, encontré la respuesta en /woocommerce/includes/class-wc-order-item.php. En ese archivo está la siguiente función:
public function get_formatted_meta_data( $hideprefix = '_', $include_all = false ) { $formatted_meta = array(); $meta_data = $this->get_meta_data(); $hideprefix_length = ! empty( $hideprefix ) ? strlen( $hideprefix ) : 0; $product = is_callable( array( $this, 'get_product' ) ) ? $this->get_product() : false; $order_item_name = $this->get_name(); foreach ( $meta_data as $meta ) { if ( empty( $meta->id ) || '' === $meta->value || ! is_scalar( $meta->value ) || ( $hideprefix_length && substr( $meta->key, 0, $hideprefix_length ) === $hideprefix ) ) { continue; } $meta->key = rawurldecode( (string) $meta->key ); $meta->value = rawurldecode( (string) $meta->value ); $attribute_key = str_replace( 'attribute_', '', $meta->key ); $display_key = wc_attribute_label( $attribute_key, $product ); $display_value = wp_kses_post( $meta->value ); if ( taxonomy_exists( $attribute_key ) ) { $term = get_term_by( 'slug', $meta->value, $attribute_key ); if ( ! is_wp_error( $term ) && is_object( $term ) && $term->name ) { $display_value = $term->name; } } // Skip items with values already in the product details area of the product name. if ( ! $include_all && $product && $product->is_type( 'variation' ) && wc_is_attribute_in_product_name( $display_value, $order_item_name ) ) { continue; } $formatted_meta[ $meta->id ] = (object) array( 'key' => $meta->key, 'value' => $meta->value, 'display_key' => apply_filters( 'woocommerce_order_item_display_meta_key', $display_key, $meta, $this ), 'display_value' => wpautop( make_clickable( apply_filters( 'woocommerce_order_item_display_meta_value', $display_value, $meta, $this ) ) ), ); } return apply_filters( 'woocommerce_order_item_get_formatted_meta_data', $formatted_meta, $this ); }
Las líneas 26 a 29 son la fuente de los problemas de nuestro cliente. La plantilla del albarán, tal como está escrita, utiliza la función predeterminada: no pasa el importante indicador de "Incluir todo", que, como puede ver en la línea 1, por defecto es 'falso'. Como resultado, la declaración If en la línea 27 intenta ser útil y resulta contraproducente de manera espectacular. Best Fishing Kayak Day – Sam Rayburn Texas Kayak Bass Fishing : Hobie vs Bonafide Kayak Challenge
Lo que está haciendo allí es intentar hacer coincidir la etiqueta de atributo, en este caso, la palabra "Invierno", con el nombre del producto, y luego "útilmente" decide que enumerar el atributo del patrón sería redundante porque está justo ahí en el nombre del producto. . Y, por la ventana se va. esto nos dice por qué faltan los metadatos y lo siguiente le indica cómo solucionarlo.
La solución: cómo evitar la falta de metadatos en los albaranes en WooCommerce
Hay varias formas de evitar este problema en particular. El adecuado para usted dependerá de sus circunstancias específicas.
1. Evite las etiquetas de atributos en los nombres de productos
Esta es probablemente la forma más fácil de solucionar el problema; si no encuentra la etiqueta, no ocultará ese Atributo. Sin embargo, esto puede perjudicarlo desde el punto de vista de la comercialización si los anuncios menores como "¡Ahora disponible en verde!" tenga sentido para su plan de marketing y aumente las conversiones. En lugar de cambiar los nombres de los productos, puede colocar esos tipos de anuncios en el área principal de su sitio, pero es posible que su tema no esté configurado para ese tipo de cosas.
2. Use SKU únicos para cada variante
Como se mencionó anteriormente, el uso de SKU únicos permitirá que la persona que complete sus pedidos no tenga ninguna ambigüedad sobre lo que se supone que debe poner en la caja. Sin embargo, no es muy bueno para el cliente final que finalmente recibirá y leerá el albarán para verificar que recibió todo lo que ordenó; no van a saber qué SKU es qué a menos que regresen a su sitio y comiencen a hacer referencias cruzadas. La mayoría de los clientes no harán eso y pueden simplemente decidir ir con una compañía diferente que les dé lo que necesitan.
3. Modificaciones de plantilla
Si no tiene miedo de arremangarse y hacer un poco de edición de temas, Facturas en PDF y albaranes ofrecen el mismo tipo de poderosas capacidades de temas que tienen WordPress y WooCommerce. Al aprovechar eso y agregar algunas líneas de código, es posible obtener todos los atributos para que aparezcan, independientemente de su presencia en el nombre del producto.
Problema Resuelto: Modificaciones de Plantilla
Entonces, ¿quieres ir con la Puerta #3? Crear sus propias plantillas de facturas y albaranes en PDF es relativamente fácil e implica tres pasos:
- Agrega los archivos a tu tema
- Personalízalos a tu gusto
- Dígale al complemento que use sus plantillas recién creadas, no las integradas.
Una nota rápida antes de comenzar – en cualquier momento durante estas instrucciones que pongo algo entre corchetes, como [your-theme-folder-here], que no debe escribirse literalmente. ¡En su lugar, sustituya lo que sea apropiado para sus necesidades!
Paso 1: agregue los archivos de plantilla de facturas y albaranes en PDF a su tema
Cuando inicie sesión en su administrador de WordPress, vaya a la página de configuración de Facturas en PDF; puede encontrarlo en el elemento del menú WooCommerce:
Cuando lo haga, será recibido con una página similar a la de arriba. Usaremos esta página varias veces durante el transcurso de la configuración de esta personalización, pero, por el momento, lo que está buscando son las instrucciones en "Elegir una plantilla".
Allí, enumerará la ubicación del complemento para su instalación de WordPress, así como la ubicación de su tema activo. En la mayoría de los casos, será /wp-content/plugins/woocommerce-pdf-invoices-packing-slips/templates/Simple para la fuente y wp-content/themes/[your-theme-name-here]/woocommerce/pdf/[template-name-here]”, respectivamente.
tenga en cuenta que el complemento no dice que 'su plantilla' puede ser lo que usted quiera que sea; esto significa que incluso puede tener varias plantillas. Por ejemplo, si desea hacer uno especial con un tema de otoño para una gran venta sin necesidad de modificar el que usa durante todo el año, puede hacerlo.
Utilizando el método que prefiera, FTP, línea de comandos, editor de temas, etc., cree las carpetas que solicita el complemento, si aún no existen. En el ejemplo anterior, eso significaría crear una carpeta 'woocommerce' dentro de su carpeta de temas, si aún no existe. Dentro de eso, crea una carpeta llamada 'pdf', y dentro eso, crea una carpeta con el nombre que le des a la plantilla. Usé 'Todos los atributos' como nombre de la plantilla, por lo que mi ruta final fue /wp-content/themes/[theme folder here]/woocommerce/pdf/Todos los atributos.
Una vez creada la carpeta, copie (¡no mueva!) todos los archivos desde el origen a su nueva carpeta. En el momento de escribir este artículo, hay cinco archivos: html-document-wrapper.php, facture.php, packing-slip.php, style.css y template-functions.php.
Paso 2: modificar la plantilla
En el editor de texto de su elección, abra packing-slip.php (o bill.php, o ambos) en la carpeta de su nueva plantilla y busque el siguiente código. Debe estar cerca de la Línea 87 en packing-slip.php, y cerca de la Línea 100 en factura.php. Alternativamente, también puede buscar 'wpo_wcpdf_before_item_meta', que aparece exactamente una vez en ambos archivos; la
etiqueta Item Meta estará justo debajo de ese gancho.
type, $item, $this->order ); ?>
Solución de problemas de archivos: el curioso caso de los albaranes de PDF y la falta de metadatos en WooCommerce
La solución de problemas es una parte normal del funcionamiento de un sitio web, pero a veces los problemas pueden volverse un poco extraños. Aquí hay un pr
seo
en
https://cdnimages.juegosboom.com/posicionamientoweblogrono.es/1220/dbmicrodb1-seo-solucion-de-problemas-de-archivos-el-curioso-caso-de-los-albaranes-de-pdf-y-la-falta-de-metadatos-en-woocommerce-112-0.jpg
2023-02-14
Acording with the Digital Millennium Copyright Act (“DMCA”), Pub. L. 105-304 If you believe that your copyrighted work is being infringed, notify our team at the email [email protected]