Snippets

Sección dedicada a compartir y explorar snippets útiles para WordPress y WooCommerce. Encuentra fragmentos de código para personalizar, optimizar y mejorar tus proyectos sin necesidad de añadir más plugins de los necesarios.

Crea una numeración personalizada para pedidos de WooCommerce con prefijo y sufijo, independiente del ID nativo. Muestra ese número en el admin, lo usa en la vista pública y permite buscar pedidos por ese número.

Cómo funciona

  • Al activar el snippet, añade un submenú en WooCommerce → Numeración de pedidos con estos ajustes:
    • Número de inicio (mínimo de la secuencia).
    • Próximo número (para saltar manualmente a un valor mayor).
    • Prefijo (p. ej. EMP- o 2025-).
    • Sufijo (p. ej. -ES).
  • En cada nuevo pedido:
    • Guarda el número interno en el metadato _emp_custom_order_number.
    • Incrementa el próximo número para el siguiente pedido.
  • Filtra el número visible del pedido (frontend y backend) para mostrar prefijo + número + sufijo.
  • En el listado de pedidos del admin añade la columna “Nº personalizado”.
  • En el buscador del listado de pedidos puedes escribir:
    • Solo dígitos (busca por el número interno crudo).
    • O el formato completo con prefijo/sufijo (p. ej. EMP-1023-ES).

Notas

  • No cambia números ya asignados; solo aplica a pedidos nuevos.
  • Si subes el número de inicio, el sistema ajusta el próximo si fuese menor.
  • Recomendado para child theme o como snippet en WPCodeBox.
...

Tutorial para importar tarifas al plugin “Correos Oficial” por peso o por coste, con o sin clases.

Qué hace y por qué

El plugin de Correos no trae importador. Este método añade una pantalla en WooCommerce Correos Importar tarifas para cargar miles de reglas desde CSV directamente al método de envío (por zona), sin tocar nada más.

Requisitos

  • WooCommerce activo.
  • Plugin Correos Oficial activo.
  • Acceso admin y WPCodeBox (o tu sistema de snippets) para pegar el código o acceso al archivo function.php
  • Tus tarifas en CSV con columnas:
    from,to,cost,condition,class

Qué permite

  • Criterio: por peso (condition=weightkg) o por coste del carrito (condition=cost).
  • Clases de envío: sin clases (productswithoutclass) o con clases (slug o “especiales”: allproducts para “pedido con varias clases”).
  • Modos: Añadir (no borra, añade) o Reemplazar (borra solo las reglas del método elegido).

Instalación del importador

  • Copia y pega el snippet PHP en WPCodeBox (o tu gestor de snippets) y actívalo.
    Archivo: importar tarifas Correos.php

Cómo preparar los CSV

A) Por peso (recomendado para paquetería)

  • Columnas: from,to,cost,condition,class
  • condition=weightkg
  • class=productswithoutclass
  • Rangos contiguos (kg): 0→1, 1→2, …
    Ejemplo:
from,to,cost,condition,class
0,1,3.21,weightkg,productswithoutclass
1,2,3.50,weightkg,productswithoutclass
2,3,3.71,weightkg,productswithoutclass

B) Por coste del carrito

  • Columnas iguales.
  • condition=cost
  • from/to en .

Ejemplo (umbral de gratis ≥50€):

from,to,cost,condition,class
0,30,9.99,cost,productswithoutclass
30,50,5.99,cost,productswithoutclass
50,999999,0.00,cost,productswithoutclass

C) Con clases de envío (opcional en otras tiendas)

  • class = slug de tu clase (p.ej. frio), o especiales:
    • productswithoutclass (productos sin clase)
    • allproducts (pedido con varias clases: fallback)

Consejo: importa primero las reglas específicas (por clase), después un fallback allproducts (quedan al final).

Uso paso a paso

  1. Crea/abre la zona y añade el método de Correos según las opciones del plugin de Correos (Paq Estándar Domicilio, Paq Ligero…).
  2. Ve a WooCommerce Correos Importar tarifas.
  3. Selecciona zona y método (Instancia: N). Fíjate en el ID de la zona, que tienes que seleccionar la instancia que le corresponda a ese ID
  4. Elige Añadir o Reemplazar.
  5. Sube el CSV
  6. Importar.

Nota: para la siguiente importación, vuelve a cargar/refrescar la página del importador.

Prompts listos para pedir a la IA los CSV desde Excel

A) Prompt por peso

Lee el Excel NOMBRE.xlsx, hoja HOJA. Genera CSV con columnas from,to,cost,condition,class para “Correos Oficial”.
Detecta tramos “Hasta X Kg” y construye intervalos: 0→1, 1→2, …
condition=weightkg, class=productswithoutclass, decimales con punto.
Un CSV por destino (Z1, Z2, Z3, Z3+, Baleares/Ceuta/Melilla, Canarias, Portugal o países AT, DE, … EU1, EU2).
Borra filas sin precio. Devuélvelos y empaquétalos en un ZIP para descargarlo.

B) Prompt por coste

Lee NOMBRE.xlsx, hoja HOJA. Genera CSV from,to,cost,condition,class por coste del carrito.
Define rangos de € (p.ej. 0–30, 30–50, ≥50 gratis).
condition=cost, class=productswithoutclass, decimales con punto.
Un CSV por zona/destino. Devuélvelos en un ZIP.

(Opcional) Si hay clases: añade CSV duplicados con class=frio, class=pesado y un fallback class=allproducts.

Prioridades y mezcla de criterios

  • Evita mezclar peso y coste en el mismo método: podrías sumar importes.
  • Si vas a cambiar de criterio, usa Reemplazar.
  • Para mantener dos lógicas, crea dos métodos distintos en la misma zona.

Diagnóstico (sin tocar la BD)

URLs útiles (estando logueado como admin y con snippets de diagnóstico activos):

  • Listar zonas/métodos/instancias: /wp-admin/?correos_diag=1
  • Ver reglas de un método: /wp-admin/?dump_rules=1&id=INSTANCIA
  • Limpiar caché de envíos: /wp-admin/?flush_ship=1

Problemas típicos

  • Instancia 0 en selector → método fantasma; añade/guarda el método real en la zona y vuelve.
  • Modal no muestra cambios → limpia caché de envíos (§8).
  • Error SQL → el importador lo muestra; revisa separador decimal (punto) y cabecera.
  • Duplicados → usa Reemplazar.
  • No aplica clase esperada → verifica class del CSV (slug correcto o productswithoutclass).
...

Este snippet de código en PHP está diseñado para obtener la primera imagen de la galería de un producto en WooCommerce. Es especialmente útil cuando deseas mostrar una segunda imagen junto con la imagen destacada del producto en bucles de consulta o vistas personalizadas. 🎨

Funciones del Código

  1. Validación de WooCommerce activo
    • Comprueba si WooCommerce está activo antes de ejecutar el código.
    • Evita errores en caso de que el plugin no esté disponible.
  2. Obtener el producto actual
    • Recupera el producto en el contexto actual utilizando wc_get_product().
  3. Validación del producto
    • Verifica si el objeto del producto es válido para garantizar que se puede acceder a la información.
  4. Obtener la galería de imágenes
    • Recupera un array con los IDs de las imágenes en la galería del producto.
  5. Devolver la primera imagen
    • Devuelve el ID de la primera imagen de la galería si existe. Si no hay imágenes en la galería, retorna una cadena vacía.

Ventajas del Snippet

  • Mejora visual: Añade dinamismo al mostrar imágenes adicionales junto a la imagen destacada del producto.
  • Fácil integración: Compatible con bucles de consulta personalizados y diseños de productos.
  • Optimización del código: Incluye validaciones para evitar errores en entornos donde WooCommerce no esté activo o productos no válidos.

Este snippet proporciona una solución eficiente para mejorar la experiencia visual de tus listados de productos, creando interfaces más atractivas y dinámicas. 🚀✨

...

Este snippet de código en PHP está diseñado para obtener y gestionar datos de valoraciones de productos en WooCommerce. Te permite calcular y mostrar estadísticas relacionadas con las valoraciones de los clientes, como promedios, porcentajes por estrellas y totales, para crear etiquetas dinámicas que resalten la calidad y popularidad de tus productos. 🎯

Funciones Principales

  1. bt_get_product_data()
    • Recopila y almacena información clave sobre el producto actual:
      • Total de valoraciones por estrellas (rating_counts).
      • Número total de reseñas (total_reviews).
      • Promedio de las valoraciones (average_rating).
  2. bt_get_product_review_percentage($star)
    • Calcula el porcentaje de reseñas correspondientes a un número específico de estrellas.
    • Entrada: Número de estrellas (1 a 5).
    • Salida: Porcentaje correspondiente, redondeado a 2 decimales.
  3. bt_get_product_review_amount($star)
    • Devuelve la cantidad total de reseñas que dieron un número específico de estrellas.
  4. bt_get_total_product_reviews()
    • Obtiene el número total de reseñas del producto actual.
  5. bt_get_product_average_rating()
    • Calcula el promedio de todas las valoraciones del producto.
    • Redondea el resultado a un decimal.
  6. bt_get_product_average_rating_percentage()
    • Convierte el promedio de valoraciones en un porcentaje (sobre 100).
    • Ideal para barras o gráficos visuales.

Ventajas

  • Optimización de datos: La función bt_get_product_data() usa una variable estática para evitar múltiples llamadas redundantes a WooCommerce, mejorando el rendimiento.
  • Flexibilidad: Calcula diferentes métricas dinámicamente, adaptándose a diversas necesidades de diseño y funcionalidad.
  • Visualización dinámica: Útil para gráficos, barras de progreso y etiquetas relacionadas con valoraciones.

Con este snippet, puedes crear una experiencia visual impactante que muestre las valoraciones de tus productos de forma clara y profesional. 💡✨

...

Este snippet permite eliminar pestañas específicas de la página de producto en WooCommerce, como la descripción, las reseñas y la información adicional. Es útil para simplificar la presentación de los productos y personalizar la experiencia del usuario según las necesidades de tu tienda.

Nota: Puedes ajustar el código eliminando o añadiendo las líneas unset() correspondientes a las pestañas que deseas deshabilitar. Las opciones disponibles incluyen:

  • 'description': Descripción del producto.
  • 'reviews': Reseñas de los clientes.
  • 'additional_information': Información adicional sobre el producto.
...

Este snippet desactiva el mensaje que aparece por defecto en WooCommerce cuando un producto se añade al carrito. Es útil si prefieres una experiencia más limpia y minimalista para tus clientes, evitando distracciones en el proceso de compra.

Nota: Este ajuste solo afecta la visualización del mensaje, pero no interfiere con la funcionalidad de añadir productos al carrito.

...

Snippet que te permite mostrar el mensaje de producto agotado cuando tienes marcado en el producto sin stock, funciona sin activar la gestión de stocks, marcando si hay o no stock. Funciona con productos simples y variables, en el loop o en la página de detalle.

...