Fragmentos de código de WooCommerce que necesitarás como desarrollador de WordPress

[información sobre herramientas del autor de aioseo_eeat]
[información sobre herramientas del revisor de aioseo_eeat]
Fragmentos de código de WooCommerce

Si creas tiendas en un sitio de WordPress , WooCommerce te ofrece una base sólida, pero el verdadero control reside en los fragmentos de código inteligentes. Pequeños fragmentos de código personalizado te permiten configurar la página de la tienda, la página de pago e incluso pequeños detalles del comportamiento del producto sin necesidad de plugins pesados. Puedes insertar fragmentos de código en un archivo PHP, usar el archivo functions.php en un tema hijo o instalar un plugin de fragmentos de código para un flujo de trabajo más seguro y visual. Muchos desarrolladores prefieren Code Snippets o Code Snippets Pro porque permiten activar, desactivar y exportar reglas sin modificar los archivos del tema. Esto mantiene el código fuente ordenado y facilita la importación automática para nuevos proyectos.

Los fragmentos de código facilitan tareas comunes como cambiar el título de la página de la tienda, ocultar las rutas de navegación o ajustar los campos de pago para recopilar los datos correctos. Puedes añadir un campo personalizado a una variación de producto, cambiar el texto del botón del carrito o establecer un importe mínimo de pedido. Puedes ajustar la configuración de WooCommerce, registrar la compatibilidad con WooCommerce en un tema y habilitar el zoom, la caja de luz y el slider de la galería de productos de WC en minutos.

También puedes añadir una moneda personalizada, renombrar una pestaña de producto para que muestre más información u ocultar las categorías de productos de un widget. Tanto si pegas funciones sencillas como si mantienes una biblioteca de código personalizado en constante crecimiento, estos prácticos fragmentos te ofrecen una funcionalidad limpia y sin sobrecargas, y funcionan correctamente en la mayoría de las compilaciones tras unas pruebas satisfactorias.

Contenido

Cómo usar estos fragmentos de código de WooCommerce de forma segura

Cómo usar estos fragmentos de código de WooCommerce de forma segura
#título_de_la_imagen

Añadir fragmentos personalizados a WooCommerce puede cambiar por completo el funcionamiento de tu sitio de WordPress. Sin embargo, si pegas una línea de código incorrecta en el archivo functions.php o cometes un error en una función PHP, todo el sitio puede fallar. Por eso es importante seguir prácticas seguras al trabajar con código personalizado.

Utilice un tema secundario o un complemento de fragmentos

  • Coloque su código personalizado dentro del archivo functions.php del tema secundario para que permanezca intacto después de las actualizaciones del tema.
  • Si no desea editar los archivos del tema directamente, instale un complemento Code Snippets o Code Snippets Pro.
  • Estas herramientas le permiten crear, administrar y exportar fragmentos sin tocar los archivos del tema.
  • Los complementos también incluyen opciones de importación automática, lo que facilita la reutilización de fragmentos personalizados en diferentes sitios web.

Prueba antes de entrar en funcionamiento

  • Nunca pegue el código directamente en un sitio activo.
  • Pruebe siempre sus fragmentos en un entorno de prueba .
  • Este paso garantiza que no haya conflictos con la configuración de WooCommerce, los campos de pago u otros archivos de tema.

Documente su código personalizado

  • Agregue comentarios claros sobre cada función explicando lo que hace.
  • Ejemplo: si afecta la página de pago, la página de la tienda, las categorías de productos de WooCommerce o los campos de pago de la cuenta.
  • Un etiquetado adecuado facilita la comprensión posterior del código fuente.

Mantener copias de seguridad y control de versiones

  • Almacene sus fragmentos fuera de WordPress con Git u otra herramienta de control de versiones.
  • Si utiliza un complemento de fragmentos de código, aproveche la función de exportación.
  • Tener una copia de seguridad le permite volver atrás rápidamente si algo no funciona bien después de una actualización.

Si se gestionan correctamente, los fragmentos se convierten en un potente conjunto de herramientas. Te ayudan a personalizar WooCommerce sin sobrecargar tu sitio de WordPress con plugins innecesarios, manteniendo todo limpio y estable.

¿Necesita ayuda de expertos con la personalización de WooCommerce?

El equipo de desarrollo de WooCommerce de Seahawk crea funciones personalizadas, administra flujos de pago y crea soluciones de código estables adaptadas a su negocio.

Conceptos básicos de configuración de temas y UX: fragmentos de código de WooCommerce

Antes de adentrarse en los fragmentos avanzados, conviene configurar la compatibilidad con WooCommerce y optimizar el tema para una experiencia de compra más fluida. Muchos desarrolladores pasan por alto estos aspectos básicos, pero pueden mejorar drásticamente la apariencia y la experiencia de los usuarios en la tienda.

Declara compatibilidad con WooCommerce en tu tema

Por defecto, no todos los temas de WordPress son totalmente compatibles con WooCommerce. Añadirlo manualmente garantiza que las galerías de productos y los diseños se muestren correctamente. Puedes hacerlo dentro del archivo functions.php del tema hijo o usando un plugin de fragmentos personalizados .

función mytheme_add_woocommerce_support() { add_theme_support( 'woocommerce' ); add_theme_support( 'wc-product-gallery-zoom' ); add_theme_support( 'wc-product-gallery-lightbox' ); add_theme_support( 'wc-product-gallery-slider' ); } add_action( 'after_setup_theme', 'mytheme_add_woocommerce_support' );

Este fragmento añade compatibilidad básica con WooCommerce, junto con el zoom , la caja de luz y el deslizador de . En conjunto, estas funciones mejoran la navegación de productos en la página de producto.

Eliminar migas de pan de WooCommerce

Las migas de pan pueden ser útiles para la navegación, pero a veces recargan el diseño. Si tu tema ya incluye migas de pan o prefieres un encabezado más limpio, puedes eliminarlas de WooCommerce con este fragmento:

add_action( 'init', 'eliminar_wc_breadcrumbs' ); función eliminar_wc_breadcrumbs() { eliminar_acción( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 ); }

Use esto con cuidado, ya que algunas tiendas dependen de las migas de pan para mejorar su SEO. Si las reemplaza con otro estilo de navegación, eliminarlas puede simplificar el diseño.

Reemplazar el título de la página de la tienda

El título predeterminado de la página de la tienda suele ser simplemente "Tienda". Para que se ajuste mejor a tu marca o a tus campañas de temporada, puedes reemplazarlo con texto personalizado.

add_filter( 'woocommerce_page_title', 'shop_page_title' ); función shop_page_title( $title ) { if ( is_shop() ) { return "Nuestras colecciones"; } return $title; }

Puedes cambiar el título de la página de la tienda para que coincida con las categorías de tus productos, campañas o el lenguaje de tu marca. Por ejemplo, durante las rebajas navideñas, cámbialo a "Ofertas Navideñas" para aumentar la interacción.

Ajustes del catálogo que mejoran el descubrimiento

Una vez que tengas los conceptos básicos, el siguiente paso es perfeccionar tu catálogo de WooCommerce. Estos fragmentos te ayudan a controlar cómo aparecen los productos y las categorías en tu sitio de WordPress, facilitando que los clientes encuentren lo que buscan sin desorden ni confusión.

Cambiar la clasificación predeterminada del catálogo

Por defecto, WooCommerce ordena los productos alfabéticamente o por orden de menú. Puedes cambiar esto para mostrar primero los artículos más nuevos o por precio. Esta pequeña modificación puede destacar los artículos recién llegados o las mejores ofertas.

add_filter( 'woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby' ); función custom_default_catalog_orderby() { return 'fecha'; // Opciones: 'fecha', 'precio', 'título' }

Esto garantiza que los compradores vean sus últimos productos directamente en la parte superior de la página de la tienda.

Ajustar el número de productos por página

Demasiados productos por página pueden abrumar a los compradores. Muy pocos pueden frustrarlos con clics interminables. Aquí te explicamos cómo controlar la cantidad de productos:

add_filter( 'loop_shop_per_page', 'new_loop_shop_per_page', 20 ); function new_loop_shop_per_page( $cols ) { $cols = 12; // Ajuste este número según sea necesario return $cols; }

Ajustar este valor equilibra la velocidad del sitio con la experiencia del usuario.

Ocultar categorías o productos de los archivos

A veces, es posible que no quieras que ciertas categorías de productos aparezcan en la página de la tienda. Los artículos de temporada, los productos de venta al por mayor o las categorías de prueba se pueden excluir con un breve fragmento.

add_action( 'pre_get_posts', 'eliminar_categorías_tienda' ); función eliminar_categorías_tienda( $q ) { if ( ! $q->is_main_query() || ! $q->is_post_type_archive() ) return; if ( ! is_admin() && is_shop() ) { $q->set( 'consulta_impuestos', array(array( 'taxonomía' => 'catálogo_de_producto', 'campo' => 'slug', 'términos' => array( 'mayorista', 'estacional' ), 'operador' => 'NO ESTÁ DENTRO' ))); } }

Esto ayuda a mantener limpio su catálogo al mostrar solo los productos que desea que los clientes vean.

Excluir categorías del widget Categorías de productos

Si usas el de categorías de productos de WooCommerce en las barras laterales, es posible que no quieras que todos los productos aparezcan ahí. Puedes excluir una categoría de esta manera:

add_filter( 'woocommerce_product_categories_widget_args', 'woo_product_cat_widget_args' ); function woo_product_cat_widget_args( $cat_args ) { $cat_args['exclude'] = array( 25 ); // Reemplace 25 con el ID de su categoría return $cat_args; }

Este fragmento le brinda más control sobre el descubrimiento de productos y ayuda a dirigir la atención del cliente a sus categorías más rentables.

Mejoras en la página de producto que aumentan la conversión: fragmentos de código de WooCommerce

La página de producto es donde los compradores deciden si comprar o no. Con unos pocos fragmentos de WooCommerce, puedes simplificar el diseño, reducir la confusión y destacar los detalles más importantes.

Cambiar el nombre o eliminar las pestañas del producto

Las pestañas de producto de WooCommerce, como "Descripción" e "Información adicional", no siempre encajan con el estilo de tu tienda. Puedes renombrarlas o eliminar las adicionales por completo.

add_filter( 'woocommerce_product_tabs', 'woo_rename_tab', 98 ); función woo_rename_tab( $tabs ) { $tabs['descripción']['título'] = 'Más información'; devolver $tabs; }

También puedes eliminar la Información adicional si te parece redundante:

add_filter( 'woocommerce_product_tabs', 'eliminar_producto_tabs', 98 ); función eliminar_producto_tabs( $tabs ) { unset( $tabs['información_adicional'] ); devolver $tabs; }

Reemplace “Agotado” con un texto más amigable

La etiqueta predeterminada "Agotado" puede alejar a los clientes. Un enfoque más sutil como "Vendido" o "Próximamente" mantiene vivo el interés.

add_filter( 'woocommerce_get_availability', 'availability_filter_func' ); function availability_filter_func( $disponibilidad ) { $disponibilidad['disponibilidad'] = str_ireplace( 'Agotado', 'Vendido', $disponibilidad['disponibilidad'] ); return $disponibilidad; }

Este pequeño cambio puede mejorar la experiencia del cliente sin complementos adicionales.

Mostrar “Ya en el carrito” en lugar de “Agregar al carrito”

Si un comprador ya ha añadido un producto, ver el mismo "Añadir al carrito " puede resultar confuso. Este fragmento lo sustituye por "Ya está en el carrito".

add_filter( 'texto_para_añadir_al_carrito_de_producto_woocommerce', 'texto_para_botón_de_carrito_personalizado_woo_commerce' ); function texto_para_botón_de_carrito_personalizado_woo_commerce() { global $woocommerce; foreach( $woocommerce->cart->get_cart() como $cart_item ) { if( obtener_el_ID() == $cart_item['id_del_producto'] ) { return __( 'Ya está en el carrito', 'woocommerce' ); } } return __( 'Añadir al carrito', 'woocommerce' ); }

Esto proporciona una respuesta clara y hace que el proceso de compra sea más fluido.

Simplifique los precios variables de los productos

WooCommerce suele mostrar rangos de entre $100 y $200 para productos variables. Si prefieres mostrar solo el precio mínimo con la etiqueta "Desde", usa este fragmento:

add_filter( 'woocommerce_variable_price_html', 'variation_price_format_min', 9999, 2 ); function variation_price_format_min( $precio, $producto ) { $precios = $producto->get_variation_prices( true ); $precio_mín = current( $precios['precio'] ); return sprintf( __( 'Desde %1$s', 'woocommerce' ), wc_price( $precio_mín ) ); }

Esto establece expectativas más claras y puede fomentar más clics.

Mejora del carrito y el proceso de pago que reduce la fricción: fragmentos de código de WooCommerce

Pequeñas mejoras en el carrito y el proceso de pago pueden aumentar las conversiones rápidamente. Estos fragmentos optimizan los pasos, organizan los formularios y mantienen a los compradores concentrados.

Redirigir al pago después de agregar al carrito

Úselo para embudos de ventas de un solo producto o ventas flash donde la velocidad es importante. Añádalo al archivo functions.php del tema secundario o a un complemento de fragmentos.

add_filter( 'woocommerce_add_to_cart_redirect', 'seahawk_redirect_to_checkout' ); función seahawk_redirect_to_checkout( $url ) { devolver wc_get_checkout_url(); }

Coloque el correo electrónico primero al finalizar la compra

Recopile correos electrónicos con anticipación para los flujos de recuperación y soporte. Un número menor significa mayor prioridad.

add_filter( 'woocommerce_checkout_fields', 'seahawk_email_first' ); función seahawk_email_first( $campos ) { si ( se establece( $campos['facturación']['correo electrónico de facturación'] ) ) { $campos['facturación']['correo electrónico de facturación']['prioridad'] = 4; } devolver $campos; }

Hacer que el teléfono sea opcional o requerido por el mercado

Adapte el cumplimiento y las necesidades de soporte a cada región.

add_filter( 'woocommerce_billing_fields', 'seahawk_phone_requirement' ); function seahawk_phone_requirement( $address_fields ) { // Establezca en verdadero si su mercado necesita un teléfono requerido $address_fields['billing_phone']['required'] = false; return $address_fields; }

Reordenar u ordenar los campos de pago

Mantenga los formularios breves y lógicos. Ejemplo ⟶: coloque el nombre y el apellido más arriba.

add_filter( 'woocommerce_checkout_fields', 'seahawk_reorder_fields' ); function seahawk_reorder_fields( $campos ) { if ( isset( $campos['facturación']['nombre_de_facturación'] ) ) { $campos['facturación']['nombre_de_facturación']['prioridad'] = 6; } if ( isset( $campos['facturación']['apellido_de_facturación'] ) ) { $campos['facturación']['apellido_de_facturación']['prioridad'] = 8; } return $campos; }

Agregar casillas de verificación personalizadas encima de los términos

Úselo para consentimiento o confirmaciones adicionales. Incluye validación.

add_action( 'woocommerce_checkout_before_terms_and_conditions', 'seahawk_checkout_checkboxes' ); función seahawk_checkout_checkboxes() { ?><p class="form-row custom-checkboxes"> <label class="woocommerce-form__label checkbox"><input type="checkbox" class="woocommerce-form__input input-checkbox" name="seahawk_consent_one"><span>Acepto recibir actualizaciones de pedidos por correo electrónico</span> <span class="required">*</span></label> <label class="woocommerce-form__label checkbox"><input type="checkbox" class="woocommerce-form__input input-checkbox" name="seahawk_consent_two"><span>Confirmo que mi dirección de envío es correcta</span> <span class="required">*</span></label></p>

Caracteres de notas de órdenes limitadas

Mantenga las notas legibles para los equipos de cumplimiento.

add_filter( 'woocommerce_checkout_fields', 'seahawk_limit_order_notes' ); function seahawk_limit_order_notes( $fields ) { if ( isset( $fields['order']['order_comments'] ) ) { $fields['order']['order_comments']['maxlength'] = 180; $fields['order']['order_comments']['placeholder'] = __( 'Agregar notas de entrega cortas. Máximo 180 caracteres.' ); } return $fields; }

Mostrar un aviso de envío basado en el país

Muestra un mensaje dinámico cuando se selecciona un país específico.

add_action( 'formulario_de_facturación_antes_de_pagar_woocommerce', 'contenedor_de_avisos_de_país_seahawk' ); función contenedor_de_avisos_de_país_seahawk() { echo '<div class="shipping-notice woocommerce-info" style="display:none"> Por favor, espere de 5 a 10 días hábiles para la entrega después del procesamiento.</div> '; } add_action( 'formulario_posterior_al_pago_de_woocommerce', 'script_de_aviso_de_país_seahawk' ); función script_de_aviso_de_país_seahawk() { ?><script> document.addEventListener('DOMContentLoaded', function() { var selectEl = document.querySelector('select#billing_country'); var noticeEl = document.querySelector('.shipping-notice'); var targetCountry = 'FR'; if (!selectEl || !noticeEl) return; function toggleNotice() { if (selectEl.value === targetCountry) { noticeEl.style.display = 'block'; } else { noticeEl.style.display = 'none'; } } toggleNotice(); selectEl.addEventListener('change', toggleNotice); }); </script>

Cambiar el campo de enfoque automático al finalizar la compra

Enfoque primero el campo de correo electrónico para una entrada más rápida.

add_filter( 'woocommerce_checkout_fields', 'seahawk_change_autofocus' ); function seahawk_change_autofocus( $campos ) { if ( isset( $campos['facturación']['nombre_de_facturación'] ) ) { $campos['facturación']['nombre_de_facturación']['autofocus'] = false; } if ( isset( $campos['facturación']['correo_electrónico_de_facturación'] ) ) { $campos['facturación']['correo_electrónico_de_facturación']['autofocus'] = true; } return $campos; }

Agregue un texto útil cerca del botón Realizar pedido

Úselo para notas de privacidad o recordatorios de entrega.

add_action( 'woocommerce_review_order_after_submit', 'seahawk_message_below_checkout_button' ); función seahawk_message_below_checkout_button() { echo '<p> <small>Al realizar este pedido usted confirma que la información proporcionada es precisa.</small></p> '; }

Redirigir casos extremos y validar antes

Mantenga las señales limpias antes del pago. Ejemplo ⟶: campos obligatorios para la creación de cuenta.

add_filter( 'woocommerce_checkout_fields', 'seahawk_require_account_fields' ); function seahawk_require_account_fields( $campos ) { if ( isset( $campos['cuenta']['nombre_de_usuario_de_la_cuenta'] ) ) { $campos['cuenta']['nombre_de_usuario_de_la_cuenta']['requerido'] = true; } if ( isset( $campos['cuenta']['contraseña_de_la_cuenta'] ) ) { $campos['cuenta']['contraseña_de_la_cuenta']['requerido'] = true; } if ( isset( $campos['cuenta']['contraseña_de_la_cuenta-2'] ) ) { $campos['cuenta']['contraseña_de_la_cuenta-2']['requerido'] = true; } return $campos; }

Lógica de envío inteligente: fragmentos de código de WooCommerce

Las reglas de envío inteligentes reducen la sobrecarga de opciones y hacen que los costos sean predecibles. Estos fragmentos simplifican las decisiones sin ocultar opciones útiles como la recogida local.

Ocultar métodos de pago cuando el envío gratuito esté disponible

Mostrar solo el envío gratuito cuando corresponda. Mantener las tarifas visibles si el envío gratuito no está disponible.

add_filter( 'woocommerce_package_rates', 'seahawk_only_free_shipping_when_available', 10, 2 ); function seahawk_only_free_shipping_when_available( $tarifas, $paquete ) { $nuevas_tarifas = array(); foreach ( $tarifas como $tarifa_id => $tarifa ) { if ( 'envío_gratis' === $tarifa->id_método ) { $nuevas_tarifas[ $tarifa_id ] = $tarifa; break; } } if ( ! empty( $nuevas_tarifas ) ) { // Conservar la recogida local si existe foreach ( $tarifas como $tarifa_id => $tarifa ) { if ( 'recogida_local' === $tarifa->id_método ) { $nuevas_tarifas[ $tarifa_id ] = $tarifa; break; } } return $nuevas_tarifas; } return $tarifas; }

¿Por qué esto ayuda?

  • Elimina la fatiga de decisión cuando el envío gratuito califica.
  • Mantiene la recogida local para los compradores que lo prefieren.
  • Reduce el abandono del carrito en pedidos sensibles al precio.

Agregue un mensaje simple de umbral de envío gratuito

Si utiliza una regla de subtotal, muestre un aviso amigable para que los compradores sepan qué tan cerca están.

add_action( 'woocommerce_before_cart', 'seahawk_free_shipping_threshold_notice' ); add_action( 'woocommerce_before_checkout_form', 'seahawk_free_shipping_threshold_notice' ); function seahawk_free_shipping_threshold_notice() { $umbral = 75; // Establece tu umbral de envío gratuito $subtotal = WC()->cart ? WC()->cart->get_displayed_subtotal() : 0; if ( $subtotal && $subtotal < $umbral ) { $restante = wc_price( $umbral - $subtotal ); wc_print_notice( 'Añade ' . $restante . ' más para obtener envío gratuito.', 'aviso' ); } }

Consejos

  • Adapte este umbral a su configuración de WooCommerce para que los mensajes se mantengan precisos.
  • Pruebe con cupones e impuestos para asegurarse de que los cálculos reflejen su política.

Controles de precios y divisas: fragmentos de código de WooCommerce

Los precios ordenados generan confianza. Estos fragmentos permiten la compatibilidad con monedas regionales y optimizan la visualización de los precios en toda la tienda.

Agregar una moneda y un símbolo personalizados

Útil para marcas regionales o tiendas de prueba. Añádelo al archivo functions.php del tema secundario o a un complemento de fragmentos.

// Registra un código de moneda personalizado add_filter( 'woocommerce_currencies', 'seahawk_add_currency' ); function seahawk_add_currency( $currencies ) { $currencies['ABC'] = __( 'Moneda de muestra', 'woocommerce' ); // Reemplazar ABC y el nombre return $currencies; } // Adjunta un símbolo a tu moneda personalizada add_filter( 'woocommerce_currency_symbol', 'seahawk_add_currency_symbol', 10, 2 ); function seahawk_add_currency_symbol( $symbol, $currency ) { if ( 'ABC' === $currency ) { $symbol = '¤'; // Reemplazar con tu símbolo } return $symbol; }

Dónde usarlo

  • Configuración de WooCommerce ⟶ General ⟶ Opciones de moneda.
  • Seleccione su nueva moneda después de agregar el código.

Recortar ceros de precios inútiles

Una visualización de precios más clara mejora la legibilidad.

agregar_filtro( 'woocommerce_price_trim_zeros', '__return_true' );

Qué hace

  • Muestra 19 en lugar de 19.00.
  • Mantiene decimales sólo cuando es necesario.

Opcional ⟶ Controlar el formato de precio por configuración regional

Cambie los separadores de miles y decimales para mercados específicos.

add_filter( 'wc_price_args', 'seahawk_price_args_by_locale' ); function seahawk_price_args_by_locale( $args ) { // Ejemplo para el estilo UE if ( is_user_logged_in() && function_exists( 'get_user_locale' ) && 'fr_FR' === get_user_locale() ) { $args['separador_decimal'] = ','; $args['separador_de_mil'] = ' '; } return $args; }

Pagos, correos electrónicos y gestión de pedidos: fragmentos de código de WooCommerce

Refuerce la comunicación y el control con algunos fragmentos fiables. Estos ayudan a su equipo a ver actualizaciones clave, añadir datos de pedidos a los correos electrónicos, pausar el proceso de compra durante el mantenimiento y bloquear pedidos de riesgo.

Agregar un destinatario de correo electrónico adicional para pedidos completados

Incluya soporte o contabilidad cuando se complete un pedido.

add_filter( 'woocommerce_email_recipient_customer_completed_order', 'seahawk_extra_completed_order_recipient', 10, 2 ); function seahawk_extra_completed_order_recipient( $recipient, $order ) { $extra = 'ops@example.com'; // Reemplace con su dirección if ( $recipient && strpos( $recipient, $extra ) === false ) { $recipient .= ', ' . $extra; } return $recipient; }

Consejo

  • Para una copia oculta, conéctese a woocommerce_email_headers y agregue un encabezado CCO.

Agregar metadatos de pedidos personalizados a correos electrónicos transaccionales

Mostrar un código de seguimiento o cualquier campo personalizado guardado en los correos electrónicos de los clientes.

// 1) Guarde un campo meta de pedido personalizado para fines de demostración add_action( 'woocommerce_checkout_update_order_meta', 'seahawk_save_tracking_meta' ); function seahawk_save_tracking_meta( $order_id ) { // Reemplace con su propia lógica que guarde un valor de seguimiento real if ( ! metadata_exists( 'post', $order_id, '_tracking_code' ) ) { update_post_meta( $order_id, '_tracking_code', 'ABC123' ); } } // 2) Inyecte ese meta en los correos electrónicos add_filter( 'woocommerce_email_order_meta_fields', 'seahawk_add_tracking_to_emails', 10, 3 ); función seahawk_add_tracking_to_emails( $campos, $enviado_a_administrador, $pedido ) { $seguimiento = $pedido->get_meta( '_código_de_seguimiento' ); si ( $seguimiento ) { $campos['código_de_seguimiento'] = matriz( 'etiqueta' => __( 'Código de seguimiento', 'woocommerce' ), 'valor' => esc_html( $seguimiento ), ); } devolver $campos; }

Donde se nota

  • Orden de procesamiento del cliente
  • Pedido completado por el cliente
  • Nuevo pedido de administrador

Denegar el pago si el usuario tiene pedidos pendientes

Útil para el control de fraudes o flujos de trabajo especiales. Bloquea el proceso de pago cuando un cliente con el mismo correo electrónico tiene pedidos pendientes.

add_action( 'woocommerce_after_checkout_validation', 'seahawk_block_when_pending_orders', 10, 2 ); function seahawk_block_when_pending_orders( $data, $errors ) { if ( is_user_logged_in() ) { $customer_id = get_current_user_id(); $args = array( 'type' => 'shop_order', 'status' => array( 'wc-pending' ), 'limit' => 1, 'customer_id' => $customer_id, 'return' => 'ids', ); $pending = wc_get_orders( $args ); if ( ! empty( $pending ) ) { $errors->add( 'seahawk_pending_block', __( 'Tiene un pedido pendiente. Complete el pago o cancélelo antes de realizar un nuevo pedido.' ) ); } return; } // Pago como invitado ⟶ coincidencia por correo electrónico de facturación $email = isset( $data['billing_email'] ) ? sanitize_email( $data['billing_email'] ) : ''; if ( $email ) { $args = array( 'type' => 'shop_order', 'status' => array( 'wc-pending' ), 'limit' => 1, 'billing_email' => $email, 'return' => 'ids', ); $pending = wc_get_orders( $args ); if ( ! empty( $pending ) ) { $errors->add( 'seahawk_pending_block_guest', __( 'Tiene un pedido pendiente. Complete el pago o cancélelo antes de realizar un nuevo pedido.' ) ); } } }

Notas

  • Adapte el mensaje para que coincida con su flujo de trabajo de soporte.
  • Considere permitir el pago en efectivo contra entrega o mediante transferencia bancaria si es necesario.

Habilitar el modo de vacaciones o pausa

Mantén el catálogo visible mientras desactivas el carrito y el pago. Ideal para periodos de mantenimiento o auditorías de stock.

add_action( 'init', 'seahawk_holiday_mode' ); function seahawk_holiday_mode() { if ( ! apply_filters( 'seahawk_holiday_mode_enabled', false ) ) { return; } remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 ); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); remove_action( 'woocommerce_proceder_a_la_caja', 'woocommerce_button_proceder_a_la_caja', 20 ); remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 ); add_action( 'woocommerce_before_main_content', 'seahawk_shop_disabled_notice', 5 ); add_action( 'woocommerce_before_cart', 'seahawk_shop_disabled_notice', 5 ); add_action( 'woocommerce_before_checkout_form', 'seahawk_shop_disabled_notice', 5 ); } function seahawk_shop_disabled_notice() { wc_print_notice( __( 'Nuestra tienda no está disponible temporalmente. Vuelva pronto.' ), 'error' ); }

Cómo alternar

  • Establezca el filtro como verdadero en un breve fragmento de ayuda o a través de un complemento específico del sitio:
agregar_filtro( 'modo_vacaciones_seahawk_habilitado', '__return_true' );

Opcional ⟶ Cambiar nombre y dirección para correos electrónicos

Alinee el remitente del correo electrónico con la identidad de su marca .

add_filter( 'wp_mail_from_name', 'seahawk_wp_mail_from_name', 99 ); function seahawk_wp_mail_from_name( $nombre ) { $wc_name = get_option( 'woocommerce_email_from_name' ); return $wc_name ? html_entity_decode( $wc_name ): $nombre; } add_filter( 'wp_mail_from', 'seahawk_wp_mail_from', 99 ); function seahawk_wp_mail_from( $correo electrónico ) { $wc_correo electrónico = get_option( 'woocommerce_email_from' ); return $wc_email ? sanitize_email( $wc_email ): $correo electrónico; }

Dónde configurar

  • WooCommerce ⟶ Configuración ⟶ Correos electrónicos ⟶ Nombre y dirección del remitente.

Cuenta de cliente y reglas de acceso: fragmentos de código de WooCommerce

Los datos de la cuenta impulsan el soporte, el historial de pedidos y el contenido restringido . Usa estos fragmentos para controlar los campos de la cuenta y desbloquear funciones para compradores anteriores.

Hacer que los campos de la cuenta sean obligatorios al finalizar la compra

Solicite nombre de usuario y contraseñas cuando desee que los clientes creen una cuenta al momento de pagar.

add_filter( 'woocommerce_checkout_fields', 'seahawk_require_account_on_checkout' ); function seahawk_require_account_on_checkout( $campos ) { if ( isset( $campos['cuenta']['nombre_de_usuario_de_la_cuenta'] ) ) { $campos['cuenta']['nombre_de_usuario_de_la_cuenta']['requerido'] = true; } if ( isset( $campos['cuenta']['contraseña_de_la_cuenta'] ) ) { $campos['cuenta']['contraseña_de_la_cuenta']['requerido'] = true; } if ( isset( $campos['cuenta']['contraseña_de_la_cuenta-2'] ) ) { $campos['cuenta']['contraseña_de_la_cuenta-2']['requerido'] = true; } return $campos; }

Bueno para

  • Tiendas de membrecía.
  • Reordenar soporte y direcciones guardadas.
  • Incorporación posterior a la compra.

Comprobar si un usuario ya ha comprado productos específicos

Útil para desbloquear descargas, limitar compras repetidas o mostrar ofertas de actualización.

función seahawk_user_bought_any( $product_ids = array(), $user_id = 0 ) { si ( vacío( $product_ids ) ) devuelve falso; si ( ! $user_id && is_user_logged_in() ) { $user_id = get_current_user_id(); } si ( ! $user_id ) devuelve falso; $pedidos = wc_get_orders( array( 'type' => 'shop_order', 'status' => array( 'wc-completed', 'wc-processing' ), 'limit' => -1, 'customer_id' => $user_id, 'return' => 'ids', ) ); si ( vacío( $pedidos ) ) devuelve falso; foreach ( $pedidos como $order_id ) { $pedido = wc_get_order( $order_id ); foreach ( $order->get_items() como $item ) { $pid = $item->get_product_id(); $vid = $item->get_variation_id(); if ( in_array( $pid, $product_ids, true ) || in_array( $vid, $product_ids, true ) ) { return true; } } } return false; }

Cómo utilizar en una plantilla

// Ejemplo en una plantilla de producto o código corto $unlock_for = array( 21, 67 ); // ID de producto que otorgan acceso if ( seahawk_user_bought_any( $unlock_for ) ) { echo '<p> Gracias por tu compra. Tu contenido adicional está desbloqueado.</p> '; } de lo contrario { echo '<p> Compra el curso para desbloquear lecciones adicionales.</p> '; }

Ideas

  • Mostrar una pestaña personalizada solo para compradores anteriores.
  • Reemplace Agregar al carrito con un enlace de descarga.
  • Ofrecer actualizaciones con descuento a propietarios anteriores.

Disciplina de búsqueda y filtrado: fragmentos de código de WooCommerce

Controla lo que ven los compradores en los resultados de búsqueda y las plantillas. Los resultados limpios ayudan a los usuarios a encontrar los productos adecuados más rápido y mantienen ocultas las categorías privadas.

Ocultar una categoría de la búsqueda en el sitio

Mantenga las categorías de alquileres, ventas al por mayor o borradores fuera de los resultados de búsqueda.

add_action( 'pre_get_posts', 'seahawk_hide_category_from_search' ); function seahawk_hide_category_from_search( $consulta ) { if ( is_admin() || ! $consulta->is_main_query() || ! $consulta->is_search() ) { return; } $consulta_de_impuestos = array( array( 'taxonomía' => 'catálogo_de_producto', 'campo' => 'slug', 'términos' => array( 'alquileres' ), ​​// Reemplace con el slug de su categoría 'operador' => 'NO ESTÁ', ), ); $consulta->set( 'tipo_de_publicación', array( 'producto' ) ); $consulta->set( 'consulta_de_impuestos', $consulta_de_impuestos ); }

Casos de uso

  • Ocultar solo artículos de venta al por mayor.
  • Excluir borradores de temporada hasta el lanzamiento.
  • Mantenga los paquetes B2B fuera de la búsqueda minorista.

Comprobaciones rápidas de categorías o etiquetas en plantillas

Cargue bloques, insignias o mensajes de forma condicional según la categoría o etiqueta.

// En un bucle de producto o una sola plantilla if ( has_term( 'sneakers', 'product_cat', get_the_ID() ) ) { echo ' <span class="badge">Edición limitada</span> '; } if ( has_term( array( 'gift', 'bundle' ), 'product_tag', get_the_ID() ) ) { echo '<p> Envío en 24 horas</p> '; }

Ideas

  • Muestra una insignia de “Listo para regalar” para los artículos etiquetados.
  • Agregue tablas de tallas solo a las categorías de ropa.
  • Mostrar notas de seguridad en los productos cosméticos.

Excluir categorías del widget Categorías de productos

Mantenga las barras laterales enfocadas en lo que desea que los usuarios exploren.

add_filter( 'woocommerce_product_categories_widget_args', 'seahawk_widget_exclude_cats' ); function seahawk_widget_exclude_cats( $args ) { $args['exclude'] = array( 16, 25 ); // Reemplazar con los ID de categoría return $args; }

Consejo

  • Encuentre los ID en Productos ⟶ Categorías ⟶ pase el cursor sobre el nombre para ver el ID en la URL.

Mejoras para la comodidad del administrador: fragmentos de código de WooCommerce

Gestionar una tienda WooCommerce implica trabajar desde la administración de WordPress . Estos fragmentos facilitan tu trabajo diario, mostrando detalles importantes y alineando los correos electrónicos salientes con tu marca.

Agregar columnas personalizadas a la lista de pedidos

Muestra datos adicionales como números de serie o códigos de seguimiento directamente en la vista de lista de pedidos.

// Agregar una nueva columna add_filter( 'manage_edit-shop_order_columns', 'seahawk_edit_shop_order_columns' ); function seahawk_edit_shop_order_columns( $columns ) { $columns['serial'] = __( 'Número de serie', 'woocommerce' ); return $columns; } // Rellenar la columna con datos add_action( 'manage_shop_order_posts_custom_column', 'seahawk_shop_order_column_content', 10, 2 ); function seahawk_shop_order_column_content( $column, $post_id ) { if ( 'serial' === $column ) { $serial = get_post_meta( $post_id, '_order_serial_number', true ); if ( $serial ) { echo esc_html( $serial ); } de lo contrario { echo '—'; } } }

Por qué ayuda

  • Ahorra clics al mostrar datos por adelantado.
  • Reduce el tiempo empleado en abrir cada pedido.

Agregar productos vinculados o SKU a tipos de publicaciones personalizadas

Si ejecuta configuraciones de productos personalizadas, puede ampliar aún más las columnas.

add_filter( 'administrar_editar_columnas_de_producto', 'seahawk_editar_columnas_de_producto' ); function seahawk_edit_product_columns( $columnas ) { $columnas['sku'] = __( 'SKU', 'woocommerce' ); return $columnas; } add_action( 'administrar_publicaciones_de_producto_columna_personalizada', 'seahawk_product_column_content', 10, 2 ); function seahawk_product_column_content( $columna, $id_de_publicación ) { if ( 'sku' === $columna ) { $producto = wc_get_product( $id_de_publicación ); echo $producto ? $producto->get_sku() : ''; } }

Caso de uso

  • Vea los SKU de productos de un vistazo.
  • Mantenga eficientes a los administradores de catálogo.

Alinear el nombre y la dirección del remitente del correo electrónico con la marca

Los valores predeterminados de WordPress pueden parecer poco profesionales. Corrígelos extrayendo los valores de la configuración de WooCommerce.

add_filter( 'wp_mail_from_name', 'seahawk_custom_from_name', 99 ); function seahawk_custom_from_name( $nombre ) { $wc_name = get_option( 'woocommerce_email_from_name' ); return $wc_name ? html_entity_decode( $wc_name ): $nombre; } add_filter( 'wp_mail_from', 'seahawk_custom_from_address', 99 ); function seahawk_custom_from_address( $correo electrónico ) { $wc_correo electrónico = get_option( 'woocommerce_email_from' ); return $wc_correo electrónico ? sanitize_email( $wc_correo electrónico ): $correo electrónico; }

Dónde establecer los valores

  • WooCommerce ⟶ Configuración ⟶ Correos electrónicos ⟶ Nombre del remitente y Dirección del remitente.

Asistentes de rendimiento y diseño: fragmentos de código de WooCommerce

Las páginas más rápidas y los diseños claros aumentan las conversiones. Estos fragmentos mejoran la apariencia de tu carrito en dispositivos móviles y optimizan las consultas sobre productos destacados.

Haga que la tabla del carrito sea compatible con dispositivos móviles

Convierte la tabla del carrito en filas apiladas en pantallas pequeñas. Agrega este CSS a la hoja de estilos de tu tema secundario o a un panel CSS personalizador.

/* Tabla de carrito de WooCommerce optimizada para dispositivos móviles */ @media screen and (ancho máximo: 700 px) { .woocommerce table.shop_table, .woocommerce table.shop_table thead, .woocommerce table.shop_table tbody, .woocommerce table.shop_table th, .woocommerce table.shop_table td, .woocommerce table.shop_table tr { display: block; } .woocommerce table.shop_table thead tr { position: absolute; top: -9999 px; left: -9999 px; } .woocommerce table.shop_table tr { margin-bottom: 12 px; border: 1 px solid #e5e7eb; border-radius: 8 px; overflow: hidden; } .woocommerce table.shop_table td { position: relative; padding-left: 50% !important; border: none; borde inferior: 1px sólido #f1f5f9; } .woocommerce table.shop_table td:last-child { borde inferior: ninguno; } .woocommerce table.shop_table td::before { posición: absoluta; superior: 10px; izquierda: 10px; ancho: 45%; espacio en blanco: nowrap; peso de fuente: 600; contenido: attr(data-title); } }

Cómo funciona

  • Utiliza el atributo data-title que WooCommerce agrega a las celdas de la tabla.
  • Oculta el encabezado y convierte cada fila en una tarjeta.
  • Mejora la legibilidad en teléfonos sin un complemento.

Utilice un transitorio para los identificadores de productos destacados

Almacenar en caché una lista de productos destacados reduce las consultas repetidas. Prepárala una vez y reutilízala en diferentes plantillas.

función seahawk_get_featured_product_ids( $cache_key = 'seahawk_featured_ids', $ttl = HORA_EN_SEGUNDOS ) { $ids = get_transient( $cache_key ); si ( falso !== $ids ) { devolver $ids; } $featured_query = new WP_Query( matriz( 'tipo_de_publicación' => 'producto', 'publicaciones_por_página' => -1, 'meta_query' => matriz( matriz( 'clave' => '_destacado', 'valor' => 'sí', 'comparar' => '=', ), ), 'campos' => 'ids', 'no_found_rows' => verdadero, ) ); $ids = $featured_query->publicaciones; establecer_transient( $cache_key, $ids, $ttl ); devolver $ids; } // Ejemplo de uso ⟶ crear una mini cuadrícula add_shortcode( 'seahawk_featured_grid', function( $atts ) { $ids = seahawk_get_featured_product_ids(); if ( empty( $ids ) ) return '<p> No se encontraron productos destacados.</p> '; $salida = '<ul class="featured-grid"> '; foreach ( $ids como $pid ) { $out .= '<li> <a href="' . esc_url( get_permalink( $pid ) ) . '">' . esc_html( obtener_el_título( $pid ) ) . '</a></li> '; } $fuera .= '</ul> '; devolver $out; } );

Consejos

  • Borre el transitorio cuando alterne el estado destacado.
  • Conéctese a las actualizaciones del producto para eliminar el caché.
add_action( 'guardar_producto_de_publicación', function( $id_de_publicación ) { delete_transient( 'id_de_destacados_de_seahawk' ); } );

Detalles de cumplimiento y localización: fragmentos de código de WooCommerce

Pequeños ajustes en los formularios y el idioma hacen que el proceso de pago sea más rápido y preciso en diferentes regiones. Estos fragmentos te ayudan a localizar sin necesidad de plugins adicionales.

Eliminar el campo Estado donde no sea necesario

Algunos países no utilizan estados. Ocultar el campo acorta el formulario y reduce la confusión.

add_filter( 'woocommerce_default_address_fields', 'seahawk_remove_state_field' ); función seahawk_remove_state_field( $campos ) { si ( se establece( $campos['estado'] ) ) { $campos['estado']['obligatorio'] = falso; $campos['estado']['oculto'] = verdadero; } devolver $campos; }

Consejo

  • Utilice la lógica condicional si solo desea ocultarla para países específicos.

Agregar un país personalizado a la lista

Útil para entornos de prueba o regiones especiales.

add_filter( 'woocommerce_countries', 'seahawk_add_custom_country' ); function seahawk_add_custom_country( $countries ) { $countries['XX'] = __( 'Exampleland', 'woocommerce' ); // Reemplazar código y nombre return $countries; } add_filter( 'woocommerce_continents', 'seahawk_map_custom_country' ); function seahawk_map_custom_country( $continents ) { // Agrega el código de tu país a un continente if ( isset( $continents['EU']['countries'] ) ) { $continents['EU']['countries'][] = 'XX'; } return $continents; }

Donde aparece

  • Configuración de WooCommerce ⟶ General ⟶ Ubicaciones de venta.
  • Menús desplegables de países en las páginas de pago y cuenta.

Traduzca rápidamente microcopias con gettext

Corrija errores tipográficos o cambie el texto en la tienda sin editar las plantillas.

add_filter( 'gettext', 'seahawk_quick_translate', 10, 3 ); function seahawk_quick_translate( $translated, $original, $domain ) { // Ejemplo ⟶ cambiar “Elegir una opción” a “Seleccionar” if ( 'Elegir una opción' === $original && 'woocommerce' === $domain ) { return 'Seleccionar'; } // Ejemplo ⟶ renombrar “Añadir al carrito” a “Añadir a la bolsa” if ( 'Añadir al carrito' === $original && 'woocommerce' === $domain ) { return 'Añadir a la bolsa'; } return $translated; }

Notas

  • Coincide exactamente con la cadena original.
  • Mantenga los cambios consistentes con la voz de su marca.

Opcional ⟶ Localizar separadores de precios por configuración regional

Ayude a los usuarios a leer los precios en un formato familiar.

add_filter( 'wc_price_args', 'seahawk_price_format_by_locale' ); function seahawk_price_format_by_locale( $args ) { if ( function_exists( 'get_user_locale' ) && 'fr_FR' === get_user_locale() ) { $args['separador_decimal'] = ','; $args['separador_de_miles'] = ' '; } return $args; }

Prueba

  • Totales del carrito.
  • Cupones e impuestos.
  • Solicitar correos electrónicos.

Reflexiones finales

Ahora tienes una biblioteca de fragmentos de código de WooCommerce que abarca la visualización del catálogo, el proceso de pago, la lógica de envío, los precios, la localización y la comodidad de administración. Combinados, te dan control sin necesidad de plugins pesados ​​y mantienen tu sitio de WordPress optimizado.

Antes de implementarlos, tenga en cuenta estas últimas prácticas recomendadas:

  • Pruebe siempre en fase de prueba antes de aplicar fragmentos a un sitio en activo.
  • Mantenga copias de seguridad de su archivo functions.php o de la exportación de fragmentos del complemento.
  • Agregue comentarios a cada fragmento para que los futuros desarrolladores entiendan qué hace cada uno.
  • Revisar las actualizaciones de WooCommerce ⟶ algunos fragmentos pueden necesitar ajustes con el tiempo.

Si se manejan con cuidado, estas pequeñas funciones pueden ahorrarle docenas de instalaciones de complementos y hacer que su tienda en línea sea más rápida y fácil de administrar.

Preguntas frecuentes sobre los fragmentos de código de WooCommerce

¿Cuál es la forma más segura de agregar fragmentos de WooCommerce?

La forma más segura es usar el archivo functions.php de un tema hijo o un plugin de fragmentos de código. Esto garantiza que el código permanezca intacto durante las actualizaciones del tema y se pueda administrar sin editar directamente los archivos del tema.

¿Debería utilizar functions.php o un complemento de fragmentos?

Si buscas control total, functions.php es la solución. Para mayor flexibilidad, especialmente en sitios web de clientes, un plugin como Code Snippets Pro es más fácil de administrar y ofrece importación y exportación automáticas.

¿Puedo dañar mi sitio con un fragmento incorrecto?

Sí. Un solo error de PHP puede causar un error fatal. Siempre pruebe los fragmentos en un sitio de prueba antes de añadirlos a una tienda activa.

¿Los fragmentos ralentizan WooCommerce?

No, no si se escribe correctamente. De hecho, los fragmentos suelen reemplazar a los plugins, lo que reduce la sobrecarga y acelera tu tienda.

¿Cómo puedo probar los fragmentos después de agregarlos?

Pruebe como invitado y como usuario registrado. Revise el carrito, la página de pago y los campos de pago de la cuenta. Confirme que el envío, el método de pago y los totales sigan funcionando correctamente.

Publicaciones relacionadas

Las mejores plataformas de comercio electrónico gratuitas

Las mejores plataformas de comercio electrónico gratuitas que realmente funcionan en 2026

Las mejores plataformas de comercio electrónico para SEO en 2026 incluyen WooCommerce para un control SEO completo, SureCart

WebP vs PNG: ¿Qué formato de imagen es el adecuado para su sitio web?

WebP vs PNG: ¿Qué formato de imagen es el adecuado para su sitio web?

La comparación entre WebP y PNG es habitual a la hora de elegir el formato de imagen adecuado en 2026.

Las mejores agencias de migración de sitios web de WordPress

Las mejores agencias de migración de sitios web de WordPress [Recomendaciones de expertos]

Entre las mejores agencias de migración de sitios web en 2026 se encuentra Seahawk Media, que ofrece migraciones de CMS a precios asequibles

Comience a usar Seahawk

Regístrate en nuestra aplicación para ver nuestros precios y obtener descuentos.