Si tienes más de un formulario de pedido mayorista, un visitante que no tenga acceso a un formulario verá tu texto de Acceso Denegado con un enlace de inicio de sesión. Ese enlace siempre apunta a la misma página, la configurada en Captura de Clientes Potenciales Mayoristas, sin importar en qué formulario estuviera. Este artículo te muestra cómo enviar a los visitantes a una página de inicio de sesión diferente por formulario.
Requisitos
- Formulario de Pedido Mayorista de WooCommerce, con al menos dos páginas de formulario de pedido y permisos configurados en ellas.
- Captura de Clientes Potenciales Mayoristas, que proporciona la configuración de redirección de inicio de sesión que este fragmento anula.
- Un lugar seguro para añadir PHP: un tema hijo, un plugin específico del sitio o un plugin de fragmentos de código como WPCode.
Por qué el enlace de inicio de sesión siempre va a la misma página
Cada formulario de pedido tiene sus propios permisos y su propio texto de Acceso Denegado. La URL de inicio de sesión detrás de ese texto es una única configuración global, por lo que cada formulario envía a los visitantes al mismo lugar.
Envía cada formulario a su propia página de inicio de sesión
Filtra la URL de inicio de sesión y devuelve una diferente dependiendo de la página que se esté viendo. Añade esto al functions.php de tu tema hijo, a un plugin específico del sitio o a un plugin de fragmentos de código.
add_filter(
'option_wwof_permissions_noaccess_login_url',
function ( $url ) {
$page_id = get_queried_object_id();
if ( ! $page_id ) {
return $url;
}
// Replace 123 and 124 with your order form page IDs,
// and the URLs with the login page each one should use.
if ( 123 === $page_id ) {
return 'https://example.com/retailer-login/';
}
if ( 124 === $page_id ) {
return 'https://example.com/distributor-login/';
}
return $url;
}
);
Dos detalles son importantes. Usa get_queried_object_id() en lugar de leer la consulta global directamente, porque en una solicitud sin página detrás, como una 404 o un feed, la antigua forma $wp_query->post->ID lanza un error fatal. Y siempre devuelve $url al final, para que cualquier página que no hayas listado mantenga la página de inicio de sesión predeterminada.
Encuentra los IDs de tus páginas de formulario de pedido
- Ve a Páginas en tu administrador de WordPress.
- Abre la página que contiene el formulario de pedido.
- Lee el valor
posten la barra de direcciones del navegador. Enpost.php?post=123&action=edit, el ID de la página es 123.
Preguntas frecuentes
¿Puedo hacer esto sin código?
No. La URL de inicio de sesión es una configuración global en Captura de Clientes Potenciales Mayoristas, por lo que enviar diferentes formularios a diferentes páginas requiere el filtro anterior.
¿Qué sucede en una página que no listo?
Utiliza la página de inicio de sesión configurada en Captura de Clientes Potenciales Mayoristas, porque el fragmento devuelve el valor original para cualquier cosa que no coincida.
La redirección no está cambiando. ¿Qué debo comprobar?
Comprueba primero el ID de la página, ya que es la página que contiene el formulario de pedido, no el ID del formulario. Luego, confirma que el fragmento se está cargando realmente, añadiéndolo a través de un plugin de fragmentos de código en lugar de un tema que puede estar inactivo.
¿Esto cambia a dónde van los clientes después de iniciar sesión?
No. Solo cambia la página de inicio de sesión a la que apunta el texto de Acceso Denegado. A dónde aterriza un cliente después de iniciar sesión sigue siendo la configuración de Captura de Clientes Potenciales Mayoristas.
¿Necesitas ayuda?
Si tienes alguna pregunta o encuentras algún problema, estamos aquí para ayudarte.
- Usuarios premium: Abrir un ticket de soporte
- Usuarios gratuitos: Visita nuestro foro comunitario

