Quieres que los clientes aterricen en una página específica después de iniciar sesión, o necesitas añadir un enlace o un script a la página de inicio de sesión. Custom Login para WooCommerce te proporciona ganchos para ambas cosas, así que no tienes que editar los archivos del plugin. También tiene un punto final de la API REST que lee y actualiza la configuración del plugin desde el código.
Este artículo cubre el filtro clwc_login_redirect, las acciones clwc_after_login_form y clwc_login_footer, y el punto final de la API REST /settings. También enumera tres ganchos más pequeños en una tabla breve. La configuración de la página de inicio de sesión en sí se cubre en Introducción a Custom Login para WooCommerce.
Prerrequisitos
| Requisito | Detalles |
|---|---|
| Complemento | Custom Login para WooCommerce 1.0.3 o posterior, instalado y activo |
| WooCommerce | Versión 6.0 o posterior, instalada y activa |
| Acceso | Una forma de añadir código PHP, como un plugin personalizado o un tema hijo |
| Acceso a la API REST | Una cuenta con la capacidad manage_woocommerce para el punto final de la API REST |
Cómo encajan los ganchos en la página de inicio de sesión
El plugin sirve tu página /login desde su propia plantilla independiente. Esa plantilla no carga la cabecera ni el pie de página de tu tema, y no llama a wp_head() ni a wp_footer(). Por lo tanto, una devolución de llamada añadida a wp_head o wp_footer nunca se ejecuta en esta página. Utiliza los ganchos propios del plugin a continuación en su lugar.
Ten en cuenta que el filtro de redirección se ejecuta en el envío del formulario, mientras que las dos acciones se ejecutan cuando se muestra la página de inicio de sesión.
Filtro: clwc_login_redirect
Este filtro cambia a dónde va un cliente justo después de iniciar sesión correctamente. No se ejecuta cuando un inicio de sesión falla.
apply_filters( 'clwc_login_redirect', $redirect_to, $user );
| Parámetro | Tipo | Descripción |
|---|---|---|
$redirect_to | cadena | La URL a la que se va a enviar al cliente |
$user | WP_User | La cuenta que acaba de iniciar sesión |
Devuelve la URL que deseas. El valor inicial de $redirect_to es el valor de redirect_to pasado a la página de inicio de sesión, por ejemplo tutienda.com/login/?redirect_to=.... Si no hay ninguno, es la URL de la página Mi cuenta de WooCommerce.
Esto es lo que sucede después de que tu devolución de llamada retorna:
- El filtro
woocommerce_login_redirectpropio de WooCommerce se ejecuta a continuación. Cualquier devolución de llamada en ese filtro ve tu resultado y puede cambiarlo de nuevo. - El plugin comprueba la URL final. Si apunta a otro dominio que WordPress no permite, el plugin envía al cliente a Mi cuenta en su lugar.
- El plugin redirige al cliente.
Ejemplo: enviar administradores de la tienda al panel de control
add_filter( 'clwc_login_redirect', function ( $redirect_to, $user ) {
if ( in_array( 'shop_manager', (array) $user->roles, true ) ) {
return admin_url();
}
return $redirect_to;
}, 10, 2 );
El 10 es la prioridad de la función de devolución de llamada, y el 2 indica a WordPress que tu función de devolución de llamada acepta dos parámetros. Sin el 2, no recibes $user.
Acciones: clwc_after_login_form y clwc_login_footer
Ambas acciones te permiten insertar tu propio HTML en la página de inicio de sesión. Ninguna de ellas pasa parámetros, por lo que tu función de devolución de llamada no necesita argumentos. Muestra tu contenido con echo.
| Acción | Dónde se dispara |
|---|---|
clwc_after_login_form | Directamente después de la etiqueta de cierre </form>, todavía dentro del panel del formulario de inicio de sesión. El contenido aparece debajo del formulario. |
clwc_login_footer | Después de todo el diseño de dos paneles, cerca del final de la página. El contenido no está dentro de ninguno de los paneles. |
Ejemplo: añadir un enlace debajo del formulario de inicio de sesión
add_action( 'clwc_after_login_form', function () {
echo '<p><a href="' . esc_url( home_url( '/become-a-customer/' ) ) . '">Need an account? Apply here.</a></p>';
} );
Ejemplo: añadir una línea de texto al pie de página
add_action( 'clwc_login_footer', function () {
echo '<p style="text-align:center;">Need help? Call us on 1300 000 000.</p>';
} );
Otros ganchos en la página de inicio de sesión
Estos ganchos son más pequeños y menos comunes. Funcionan de la misma manera que las acciones y filtros anteriores.
| Gancho | Tipo | Qué hace |
|---|---|---|
clwc_logout_redirect | Filtro | Cambia a dónde van los clientes después de cerrar sesión. Recibe la URL predeterminada, que es /login/ con ?logged_out=true añadido, y devuelve la URL que deseas. |
clwc_login_head | Acción | Se dispara dentro de la etiqueta <head> de la página, después de los estilos del plugin. Úsalo para añadir una hoja de estilos o una etiqueta meta. |
clwc_login_enqueue_scripts | Acción | Se dispara cerca del final de la página. Úsalo para poner en cola scripts para la página de inicio de sesión. |
El formulario de inicio de sesión también dispara los ganchos de inicio de sesión estándar de WooCommerce: woocommerce_login_form_start, woocommerce_login_form y woocommerce_login_form_end. Por eso la mayoría de los plugins CAPTCHA y de seguridad que funcionan en el formulario de inicio de sesión de WooCommerce también funcionan aquí.
API REST: punto final de configuración
El plugin tiene un punto final de API REST para su configuración. Te permite leer la configuración actual o actualizarla desde el código, por ejemplo, cuando configuras muchas tiendas desde un solo script.
/wp-json/clwc/v1/settings
| Método | Qué hace |
|---|---|
OBTENER | Devuelve toda la configuración, más la lista de rotation_items |
POST | Actualiza la configuración que envías y devuelve toda la configuración |
Quién puede usarlo
Ambos métodos requieren una cuenta iniciada con la capacidad manage_woocommerce. Eso incluye administradores y gerentes de tienda. Cualquier otra persona recibe una respuesta 401 o 403.
Para una solicitud desde el navegador mientras has iniciado sesión, envía la cabecera X-WP-Nonce con un nonce wp_rest. Para una solicitud desde fuera de WordPress, usa una contraseña de aplicación con autenticación básica.
Leer la configuración
curl -u "admin:APPLICATION_PASSWORD" https://yourstore.com/wp-json/clwc/v1/settings
La respuesta es un objeto JSON. Cualquier configuración que aún no hayas guardado se devuelve con su valor predeterminado, excepto logo_url, que se omite de la respuesta hasta que guardes una URL de logotipo.
Actualizar la configuración
Envía un cuerpo JSON solo con los campos que deseas cambiar. Los campos que omites permanecen como están.
curl -X POST -u "admin:APPLICATION_PASSWORD" \
-H "Content-Type: application/json" \
-d '{"template":"template-2","button_bg":"#e11d48","login_heading":"Welcome back"}' \
https://yourstore.com/wp-json/clwc/v1/settings
Desde el navegador, puedes usar wp.apiFetch de la misma manera:
wp.apiFetch( {
path: '/clwc/v1/settings',
method: 'POST',
data: { login_button_text: 'Sign in' },
} );
El plugin limpia cada valor antes de guardarlo. Un valor del tipo incorrecto se omite o se guarda como vacío, y la solicitud aún tiene éxito.
| Campos | Valores aceptados y manejo |
|---|---|
Campos de color: left_panel_bg, left_panel_text, right_panel_bg, right_panel_text, button_bg, button_text, button_hover_bg, link_color, link_hover_color, input_border, input_focus, promo_button_bg, promo_button_text_color, promo_button_hover_bg, promo_button_border | Un color hexadecimal como #3b82f6. Cualquier otra cosa se guarda como vacío. |
Campos de URL: logo_url, promo_button_url | Una URL válida. El plugin la limpia como una URL antes de guardarla. |
plantilla | Una de template-1, template-2, template-3, template-4, template-5. Otros valores se ignoran. |
promo_enabled, enable_rotation | yes o no. Otros valores se ignoran. |
mobile_promo_display | hide o stack. Otros valores se ignoran. |
Campos de texto: login_heading, email_label, password_label, remember_label, login_button_text, lost_password_text, promo_heading, promo_button_text | Texto plano. Se eliminan las etiquetas HTML. |
promo_content | Texto con HTML básico, como <br>, <p> y <strong>. Se elimina el HTML no seguro. |
rotation_items | Una lista de elementos. Cada elemento puede tener heading, content, button_text, button_url e image_url. Enviar este campo reemplaza toda la lista guardada. |
Solución de problemas
manage_woocommerce. Comprueba que tu contraseña de aplicación pertenece a un administrador o gerente de la tienda. Para solicitudes desde el navegador, comprueba que envías una cabecera X-WP-Nonce válida.woocommerce_login_redirect está cambiando la URL después de la tuya. Comprueba también que la URL pertenece a tu propio sitio. El plugin envía a los clientes a Mi cuenta cuando la URL final apunta a un dominio que WordPress no permite.add_filter() necesita 10, 2 al final, para que WordPress pase ambos parámetros a tu función.#3b82f6 o #fff. Los nombres de colores como red y valores como rgb(0,0,0) se guardan como vacíos.clwc_login_head para la etiqueta <head>, y clwc_login_footer o clwc_login_enqueue_scripts para el final de la página.Preguntas frecuentes
woocommerce_login_redirect.manage_woocommerce, y los gerentes de tienda la tienen por defecto.functions.php de tu tema hijo. No lo agregues a los archivos propios del plugin, ya que las actualizaciones del plugin los sobrescribirán.¿Necesita ayuda?
Custom Login for WooCommerce es un plugin premium, por lo que si necesitas ayuda con una personalización específica, abre un ticket de soporte y nuestro equipo podrá indicarte el hook adecuado para tu caso de uso.

