1. Inicio
  2. Base de Conocimientos
  3. WooCommerce Wholesale Order Form
  4. Solución de problemas del shortcode del WooCommerce Wholesale Order Form

Solución de problemas del shortcode del WooCommerce Wholesale Order Form

¿Has añadido el shortcode del Formulario de Pedidos Mayorista a una página y ahora el formulario falta, muestra un error o rompe la página? La mayoría de los casos se reducen al propio shortcode, al estado del formulario, a una plantilla de constructor de páginas o a un conflicto con otro plugin. Esta guía te guía a través de cada síntoma para que puedas encontrar la causa y hacer que el formulario vuelva a aparecer.

Antes de empezar: compruebe la sintaxis de su shortcode

En la versión 3 de WooCommerce Wholesale Order Form, el formato correcto del shortcode es:

[wwof_product_listing id="XX"]

donde XX es el ID numérico de tu Formulario de Pedidos. Un shortcode colocado sin el atributo id, o que utiliza un ID incorrecto, muestra un mensaje de error o no muestra nada en absoluto.

Para encontrar el shortcode correcto para su formulario:

  1. Ve a Mayorista → Formularios de pedido en tu administrador de WordPress.
  2. Abra el formulario que desea incrustar.
  3. Copie el shortcode que se muestra en el editor del formulario.
  4. Péguelo en la página donde desea que aparezca el formulario.
Lista de Formularios de Pedidos en WP Admin mostrando el formulario de Listado de Pedidos Mayoristas, su shortcode, ubicación y estado Publicado
Editor del formulario de pedidos mostrando la configuración del formulario y el campo del shortcode wwof_product_listing

Si ha estado usando [wwof_order_form] sin un atributo id, ese formato de shortcode ya no está en uso. Reemplácelo con el shortcode copiado del editor del formulario.

Problemas y soluciones comunes

La página muestra “No se ha especificado el ID del formulario de pedidos”, “no existe” o “Hay un error de configuración”

Los administradores que ven “No se ha especificado el ID del formulario de pedidos.” están utilizando el shortcode sin el atributo id requerido. Los administradores que ven un mensaje como “¡El ID del formulario de pedidos 123 no existe!” están utilizando un ID que no coincide con ningún formulario de pedidos, por ejemplo, el ID de un formulario que fue eliminado. En ambos casos, reemplaza el shortcode por el copiado de Mayorista → Formularios de Pedidos.

Los visitantes no administradores ven “Hay un error de configuración en este formulario. Por favor, contacta al administrador del sitio.” en lugar de ello, tanto para un ID faltante como para uno incorrecto. Este es el mismo problema subyacente. Corrige el shortcode y el mensaje desaparecerá para ambos.

Vista en frontend del mensaje de error de configuración de WWOF: "Hay un error de configuración en este formulario. Por favor, póngase en contacto con el administrador del sitio."

El formulario de pedido no se muestra en absoluto

Los clientes solo pueden ver un formulario de pedidos cuando su estado es Publicado. Un formulario en borrador todavía se muestra a los administradores y gerentes de la tienda, por lo que la página puede verse bien mientras estás conectado. Los clientes y visitantes desconectados ven un mensaje de “Acceso Denegado” (“No tienes permiso para ver este formulario de pedidos.”) en su lugar, por lo que un formulario en borrador a menudo parece un problema de permisos en lugar de un formulario faltante. Para ver lo que ven tus clientes, abre la página en una ventana privada o de incógnito.

  1. Ve a Wholesale → Formularios de pedido.
  2. Compruebe el estado del formulario. Si muestra Borrador, ábralo y haga clic en Publicar.
Lista de Formularios de Pedidos de Wholesale Suite mostrando un formulario con estado Borrador junto a un formulario Publicado

El formulario permanece en blanco dentro de una plantilla de constructor de páginas

La página se carga, pero el espacio donde debería estar el formulario de pedidos permanece vacío. Esto sucede cuando el shortcode se encuentra en una plantilla de constructor de temas, como una plantilla de Divi Theme Builder o una plantilla de tema de Elementor Pro, en lugar de en el contenido de la página.

El Formulario de Pedidos Mayorista carga su script de formulario solo cuando encuentra el shortcode en el contenido de la página que se está viendo. Una plantilla se almacena por separado de la página, por lo que el plugin no ve el shortcode allí. El contenedor del formulario vacío se imprime, pero el script que lo llena nunca se carga.

La solución más sencilla es colocar el shortcode en el contenido de la página, por ejemplo, en el editor de bloques o en un módulo del constructor en esa página. Si deseas mantener el formulario en la plantilla, añade un fragmento de código corto que indique al plugin que cargue el formulario en esa página.

Para añadir el fragmento:

  1. Ve a WooCommerce → Formularios de pedido y anota el ID de tu formulario. Es el número del shortcode del formulario, por ejemplo 123 en [wwof_product_listing id="123"].
  2. Anota el slug de la página que muestra la plantilla, por ejemplo wholesale-ordering para tuweb.com/wholesale-ordering/. El ID de la página también funciona.
  3. Añade el fragmento de código a continuación con un plugin de fragmentos de código como WPCode, o añádelo al archivo functions.php de tu tema hijo.
  4. Reemplaza wholesale-ordering con el slug de tu página y 123 con el ID de tu formulario, y luego guarda.
  5. Limpia la caché de tu sitio y recarga la página.
add_filter( 'wwof_force_load_form_posts', function ( $form_posts ) {
	// Replace 'wholesale-ordering' with the slug or ID of the page that shows the form.
	if ( is_page( 'wholesale-ordering' ) ) {
		// Replace 123 with your order form ID.
		$form_posts[123] = \RymeraWebCo\WWOF\Factories\Order_Form::get_instance( get_post( 123 ) );
	}

	return $form_posts;
} );

Un fragmento puede cargar tantos formularios como necesites. Añade una línea por formulario dentro de la comprobación de la página que lo muestra:

add_filter( 'wwof_force_load_form_posts', function ( $form_posts ) {
	if ( is_page( 'wholesale-ordering' ) ) {
		$form_posts[123] = \RymeraWebCo\WWOF\Factories\Order_Form::get_instance( get_post( 123 ) );
	}

	if ( is_page( 'trade-restock' ) ) {
		$form_posts[456] = \RymeraWebCo\WWOF\Factories\Order_Form::get_instance( get_post( 456 ) );
		$form_posts[789] = \RymeraWebCo\WWOF\Factories\Order_Form::get_instance( get_post( 789 ) );
	}

	return $form_posts;
} );

En una página donde el fragmento carga formularios, el plugin utiliza la lista del fragmento y deja de buscar shortcodes en el contenido de la página. Si esa página también tiene un formulario de pedido en su contenido, añade también ese formulario al fragmento.

La comprobación is_page() coincide con las páginas normales de WordPress. Si tu plantilla se muestra en otro tipo de pantalla, cambia la comprobación para que coincida con esa pantalla.

Aparece un error crítico de PHP cuando el shortcode está en la página

Los errores críticos que solo aparecen cuando el shortcode está presente son causados por un conflicto de plugins, un plugin de caché u optimización que maneja incorrectamente el paquete de JavaScript del formulario de pedido, o un límite de memoria de PHP demasiado bajo. Siga los pasos a continuación en orden.

Paso 1: habilite WP_DEBUG para ver el error real

  1. Abra el archivo wp-config.php de su sitio (ubicado en el directorio raíz de WordPress).
  2. Busque la línea define( 'WP_DEBUG', false ); y cambie false por true.
  3. Directamente debajo de esa línea, agregue: define( 'WP_DEBUG_LOG', true );
  4. Guarde el archivo y recargue la página que desencadena el error.
  5. Abra wp-content/debug.log.
  6. Anote el mensaje de error exacto y la ruta del archivo a la que apunta.

Ten a mano este mensaje de error y la ruta del archivo. Los necesitarás si contactas con el soporte.

Consulte Depuración en WordPress para obtener detalles completos sobre las constantes disponibles.

Paso 2: compruebe el límite de memoria de PHP

El formulario de pedido carga una aplicación JavaScript que realiza varias solicitudes en segundo plano a su servidor. Si PHP se queda sin memoria durante este proceso, puede producirse un error fatal. El mínimo recomendado para sitios de WooCommerce, incluidos los que ejecutan el WooCommerce Wholesale Order Form, es de 256 MB.

Para comprobar tu límite actual, ve a WooCommerce → Estado, abre la pestaña Estado del sistema y busca la fila Límite de memoria de WordPress. Si es inferior a 256 MB, contacta con tu proveedor de hosting para aumentarlo, o añade la siguiente línea a wp-config.php:

define( 'WP_MEMORY_LIMIT', '256M' );
Pesta\u00f1a de estado del sistema de WooCommerce que muestra la fila del l\u00edmite de memoria de WordPress

Paso 3: cambie a un tema predeterminado

Un tema que añade JavaScript conflictivo o anula las plantillas de WooCommerce puede romper el formulario de pedido. Cambiar a un tema predeterminado lo descarta rápidamente.

  1. Vaya a Apariencia → Temas en el administrador de WordPress.
  2. Active Storefront o Twenty Twenty-Four.
  3. Recargue la página con el shortcode.

Si el error desaparece con el tema predeterminado activo, su tema original es la fuente del conflicto. Vuelva a activarlo y comparta el registro de depuración con el equipo de soporte de su tema.

Paso 4: aísle el plugin en conflicto

  1. Vaya a Plugins → Plugins instalados.
  2. Desactiva todos los plugins excepto WooCommerce y tus plugins de Wholesale Suite: WooCommerce Wholesale Prices, WooCommerce Wholesale Order Form y WooCommerce Wholesale Prices Premium si lo usas.
  3. Recargue la página con el shortcode. Si el error ha desaparecido, un conflicto de plugins es la causa.
  4. Vuelva a activar los plugins uno por uno, recargando la página después de cada uno. El último plugin que activó cuando reapareció el error es el que está en conflicto.
Lista de plugins instalados de WordPress que muestra los plugins activos, incluidos WooCommerce y WooCommerce Wholesale Order Form

Conflictos de plugins conocidos y soluciones alternativas

Varios plugins de optimización y caché requieren un manejo especial para funcionar junto con el formulario de pedido. El plugin incluye compatibilidad integrada para algunos de ellos, lo que significa que no se necesitan pasos manuales para ellos.

WP Rocket. El WooCommerce Wholesale Order Form excluye automáticamente las páginas que contienen su shortcode de la caché de páginas de WP Rocket. No se necesita ninguna regla de exclusión manual.

SiteGround Optimizer. El plugin excluye automáticamente sus scripts de la combinación y minificación de JavaScript y CSS de SiteGround Optimizer. Si sigues viendo problemas después de confirmar que este es el conflicto, desactiva manualmente Combinar archivos JavaScript y Minificar archivos JavaScript (y las opciones equivalentes de combinación y minificación de CSS) para la página que contiene el formulario de pedido.

Otros plugins de caché (WP Super Cache, W3 Total Cache, LiteSpeed Cache, etc.). Añada la URL de la página del formulario de pedido a la lista de exclusión de caché del plugin y desactive la minificación y combinación de JavaScript para esa página.

Constructores de páginas (Elementor, Divi, WPBakery). Si el formulario se encuentra en una plantilla de constructor de temas y permanece en blanco, sigue los pasos de El formulario permanece en blanco dentro de una plantilla de constructor de páginas. Para Breakdance, el plugin lee los shortcodes de los elementos de Breakdance a partir de la versión 3.0.9 de WooCommerce Wholesale Order Form, por lo que no se necesita ningún paso adicional.

Qué incluir al contactar con soporte

Si el error persiste después de seguir los pasos anteriores, el equipo de soporte de Wholesale Suite necesita los siguientes detalles para investigar:

  • El mensaje de error exacto de wp-content/debug.log
  • Una lista de sus plugins activos en el momento del error
  • Tu versión de PHP y el límite de memoria actual (visible en la pestaña Estado del sistema en WooCommerce → Estado)
  • El nombre y la versión del tema activo
  • Cualquier cambio realizado en el sitio poco antes de que apareciera el error

Preguntas frecuentes

¿Cuál es el shortcode correcto para el Formulario de Pedidos Mayoristas?

El c\u00f3digo corto correcto en la versi\u00f3n 3 es [wwof_product_listing id=\"XX\"], donde XX es el ID del formulario de pedido. C\u00f3pialo directamente desde el editor del formulario en Mayorista \u2192 Formularios de pedido.

¿Por qué el formulario de pedidos muestra "Hay un error de configuración en este formulario"?

Este mensaje aparece cuando falta el atributo id en el shortcode, o cuando el ID del Formulario de Pedidos especificado no existe. Compruebe que su shortcode incluye el id correcto copiado del editor del formulario.

¿Por qué no aparece mi formulario de pedidos aunque el shortcode es correcto?

La causa m\u00e1s com\u00fan es que el formulario a\u00fan est\u00e1 guardado como Borrador. Un formulario borrador se muestra a los administradores y gerentes de la tienda, pero los clientes y visitantes no registrados ven un mensaje de \u201cAcceso denegado\u201d hasta que el formulario se Publica. Abra el formulario en Mayorista \u2192 Formularios de pedido y haga clic en Publicar. Los visitantes no registrados tambi\u00e9n pueden ver un mensaje de \u201cAcceso denegado\u201d si el formulario est\u00e1 restringido a roles espec\u00edficos.

¿Necesito configurar mi plugin de caché para que funcione con el formulario de pedidos?

Para WP Rocket y SiteGround Optimizer, no se necesita configuración manual. El plugin maneja la compatibilidad automáticamente. Para otros plugins de caché, agregue la página del formulario de pedidos a la lista de exclusión de caché y deshabilite la minificación de JavaScript para esa página.

"

El plugin carga el formulario solo cuando encuentra el c\u00f3digo corto en el contenido de la p\u00e1gina, y una plantilla de generador de temas se almacena por separado. Mueva el c\u00f3digo corto a la p\u00e1gina, o agregue el fragmento wwof_force_load_form_posts de El formulario permanece en blanco dentro de una plantilla de generador de p\u00e1ginas arriba.

"

No. El formulario de pedido siempre muestra los precios de la cuenta que ha iniciado sesi\u00f3n, y no hay modo de comprar como cliente en el front-end. Si abre el formulario mientras ha iniciado sesi\u00f3n como administrador, ver\u00e1 los precios de su propia cuenta. Para realizar un pedido al precio mayorista de un cliente, utilice un pedido de backend en su lugar. Con Wholesale Prices Premium activo, vaya a WooCommerce \u2192 Pedidos, haga clic en A\u00f1adir pedido, seleccione el cliente y marque Aplicar precios mayoristas. Para ver los pasos completos, consulte c\u00f3mo crear pedidos mayoristas manuales.

¿Necesitas ayuda?

Si tienes alguna pregunta o encuentras algún problema, estamos aquí para ayudarte.

¿Te ha resultado útil este artículo?

Artículos relacionados

Completa tu Compra