Wie kann ich in einer WordPress-Vorlage erkennen, ob die aktuelle Seite der WooCommerce-Warenkorb oder die Checkout-Seite ist?
Lesezeit: 3 Minuten
Tantalus
Ich möchte, dass ein Header-Banner ausgeblendet wird, wenn sich ein Benutzer im WooCommerce-Warenkorb oder im Checkout-Prozess befindet. Gibt es ein Flag oder eine Variable, die ich überprüfen kann, um festzustellen, ob sich die aktuelle Seite in einem dieser WooCommerce-Abschnitte befindet? Ich möchte im Grunde so etwas wie das Folgende tun:
if (!is_checkout() && !is_cart()) {
echo "<div>My Banner</div>";
}
Mir ist klar, dass ich für jeden dieser Abschnitte eine benutzerdefinierte Seitenvorlage erstellen kann, aber ich möchte nur ein einfaches Stück Code zu meinem globalen Website-Header hinzufügen.
Ihr Code ist gut, um diese Bedingung zu überprüfen. Weitere Details wurden in der Antwort hinzugefügt.
– mujuonly
21. Mai 2020 um 17:53 Uhr
Nun, würden Sie nicht wissen, Woocommerce hat an alles gedacht! Vielen Dank.
Bitte beachte, dass is_checkout() ist nutzlos, wenn Sie es früh brauchen (bevor die Vorlage geladen wird, denke ich) und wird auf der Checkout-Seite fälschlicherweise false zurückgeben, wenn es zu früh aufgerufen wird.
So etwas ist universeller:
/**
* 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() ist für die eigentliche Frage in Ordnung, aber die Frage rangiert auch bei Google an erster Stelle für “WooCommerce check if checkout”
Gleiches gilt für den Warenkorb:
/**
* 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)
);
}
Danke für diesen Maciej, ich habe versucht, nach der Kasse zu suchen, während ich den Einkaufswagen aus der Sitzung geladen habe, also hat mir das wirklich geholfen, meinen Verdacht zu bestätigen. Du hast mir Zeit gespart, also ein dickes Lob!
Ihr Code ist gut, um diese Bedingung zu überprüfen. Weitere Details wurden in der Antwort hinzugefügt.
– mujuonly
21. Mai 2020 um 17:53 Uhr
Nun, würden Sie nicht wissen, Woocommerce hat an alles gedacht! Vielen Dank.
– Tantalus
22. Mai 2020 um 17:47 Uhr