Wie kann ich in einer WordPress-Vorlage erkennen, ob die aktuelle Seite der WooCommerce-Warenkorb oder die Checkout-Seite ist?

Lesezeit: 3 Minuten

Benutzer-Avatar
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.

    – Tantalus

    22. Mai 2020 um 17:47 Uhr

Warenkorb-Seite

is_cart()

Gibt true auf der Warenkorbseite zurück.

Checkout-Seite

is_checkout()

Gibt true auf der Checkout-Seite zurück.

Sie können mehr über sehen Bedingte WooCommerce-Tags

Benutzer-Avatar
Maciej Krawczyk

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!

    – Krass

    13. Januar um 16:04 Uhr

Wenn Sie eine WordPress-Funktion verwenden möchten, gibt es hier `is_page( ‘name’)’ für Sie. https://developer.wordpress.org/reference/functions/is_page/

Sie müssen den Namen (Seiten-Slug) Ihrer Seiten verwenden. In dem Beispiel gehe ich davon aus, dass sie “Warenkorb” und “Kasse” heißen.

if (!is_page('cart') && !is_page('checkout')) { ... }

Wie in der Antwort von mujuonly können Sie auch das verwenden, was woocommerce Ihnen mit bedingten Tags bietet.

Meine Antwort kann eine Alternative sein, wenn Sie Probleme mit Woocommerce-Funktionen haben oder bei WordPress-Funktionen bleiben möchten.

1375750cookie-checkWie kann ich in einer WordPress-Vorlage erkennen, ob die aktuelle Seite der WooCommerce-Warenkorb oder die Checkout-Seite ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy