Tántalo
Me gustaría tener un banner de encabezado oculto cuando un usuario está en el carrito de WooCommerce o en el proceso de pago. ¿Hay alguna bandera o variable que pueda verificar para ver si la página actual está en alguna de estas secciones de WooCommerce? Básicamente quiero hacer algo como lo siguiente:
if (!is_checkout() && !is_cart()) {
echo "<div>My Banner</div>";
}
Me doy cuenta de que puedo crear una plantilla de página personalizada para cada una de estas secciones, pero solo quiero agregar un código simple al encabezado de mi sitio global.
Página del carrito
is_cart()
Devuelve verdadero en la página del carrito.
página de pago
is_checkout()
Devuelve verdadero en la página de pago.
Puedes ver más sobre Etiquetas condicionales de WooCommerce
Maciej Krawczyk
Tenga en cuenta que is_checkout()
es inútil si lo necesita temprano (antes de que se cargue la plantilla, creo) y devolverá incorrectamente falso en la página de pago si se llama demasiado pronto.
Algo así es más universal:
/**
* Checks if checkout is the current page.
*
* @return boolean
*/
function better_is_checkout() {
$checkout_path = wp_parse_url(wc_get_checkout_url(), PHP_URL_PATH);
$current_url_path = wp_parse_url("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]", PHP_URL_PATH);
return (
$checkout_path !== null
&& $current_url_path !== null
&& trailingslashit($checkout_path) === trailingslashit($current_url_path)
);
}
is_checkout () está bien para la pregunta real, pero la pregunta también ocupa el primer lugar en Google para “WooCommerce check if checkout”
Lo mismo aplica para el carrito:
/**
* Checks if cart is the current page.
*
* @return boolean
*/
function better_is_cart() {
$cart_path = wp_parse_url(wc_get_cart_url(), PHP_URL_PATH);
$current_url_path = wp_parse_url("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]", PHP_URL_PATH);
return (
$cart_path !== null
&& $current_url_path !== null
&& trailingslashit($cart_path) === trailingslashit($current_url_path)
);
}
-
Gracias por esto Maciej, estaba tratando de verificar el pago mientras cargaba el carrito desde la sesión, así que esto realmente me ayudó a confirmar mi sospecha. ¡Me ahorraste tiempo, así que felicitaciones!
– Descarado
13 de enero a las 16:04
Si desea utilizar una función de wordpress, hay `is_page (‘nombre’)’ aquí para usted. https://developer.wordpress.org/reference/functions/is_page/
Debe usar el nombre (slug de página) de sus páginas. En el ejemplo, asumo que se llaman ‘carrito y ‘pago’.
if (!is_page('cart') && !is_page('checkout')) { ... }
Como en la respuesta de mujuonly, también puedes usar lo que te ofrece woocommerce con etiquetas condicionales.
Mi respuesta puede ser una alternativa si tiene problemas con las funciones de woocommerce o desea quedarse con las funciones de wordpress.
Su código es bueno para verificar esta condición. Se agregaron más detalles en la respuesta.
– muy solo
21 de mayo de 2020 a las 17:53
¡Bueno, no lo sabrías, Woocommerce pensó en todo! Gracias.
– Tántalo
22 de mayo de 2020 a las 17:47