it-swarm.com.de

WooCommerce erhält die Adresse des physischen Geschäfts

In den WooCommerce-Administratoreinstellungen (/wp-admin/admin.php?page=wc-settings) gibt es mehrere Felder zum Festlegen der Geschäftsadresse (Straße, Stadt, Land).

Wie kann man dies in den Vorlagen eines Themas abrufen? Ich würde solche Informationen nicht hart in das Thema einprogrammieren wollen.

2
Buzut

Die physische Adresse des Speichers (und viele andere Einstellungen) werden in der WP-Optionstabelle gespeichert (wp_options, wobei "wp_" das auf der Site verwendete Tabellenpräfix ist).

Die Optionsnamen sind:

  • woocommerce_store_address
  • woocommerce_store_address_2
  • woocommerce_store_city
  • woocommerce_store_postcode
  • woocommerce_default_country

Das Knifflige ist der Wert von woocommerce_default_country. Darin werden die Informationen zu Land UND Bundesstaat/Provinz in Abhängigkeit von Ihrer Auswahl in der Dropdown-Liste "Land/Bundesstaat" in den Einstellungen gespeichert. Wenn es sich nur um ein Land handelt, wird es die Landesvorwahl sein. Wenn es sich jedoch um ein "Plus" -Land handelt, wird es durch einen Doppelpunkt ":" (z. B. "US: IL") getrennt.

Das Folgende ist also eine generische Methode, um eine US-Adresse zu erstellen. Andere Länder/Provinzen können geringfügig abweichen, je nachdem, (1) was im Wert von woocommerce_default_country enthalten ist (dies kann nur ein Land sein) und (2) wie Sie die Informationen ausgeben möchten.

// The main address pieces:
$store_address     = get_option( 'woocommerce_store_address' );
$store_address_2   = get_option( 'woocommerce_store_address_2' );
$store_city        = get_option( 'woocommerce_store_city' );
$store_postcode    = get_option( 'woocommerce_store_postcode' );

// The country/state
$store_raw_country = get_option( 'woocommerce_default_country' );

// Split the country/state
$split_country = explode( ":", $store_raw_country );

// Country and state separated:
$store_country = $split_country[0];
$store_state   = $split_country[1];

echo $store_address . "<br />";
echo ( $store_address_2 ) ? $store_address_2 . "<br />" : '';
echo $store_city . ', ' . $store_state . ' ' . $store_postcode . "<br />";
echo $store_country;

Dies könnte sicherlich einiges verdichtet und übersichtlicher gemacht werden, aber ich war aus Gründen der Klarheit ausführlich im Code.

Abhängig vom Standort des Geschäfts usw. möchten Sie möglicherweise auch keine Länder-/Bundesstaatsinformationen hinzufügen oder die Ausgabe basierend auf dem gespeicherten Wert ändern. Zum Beispiel ist im Fall von US-Adressen das Land "US", nicht "USA", und die Zustandsinformation ist die abgekürzte Postleitzahl (d. H. "IL" für Illinois). Der tatsächliche Wert und die beabsichtigte Verwendung bestimmen also, was Sie mit ihm für die Ausgabe tun möchten. (Hoffe das macht Sinn.)

3
butlerblog

Anstelle der oben erwähnten Methode get_option() ist es viel besser, die integrierten Funktionen über die Hauptinstanz von WooCommerce WC() zu verwenden, um auf die Methoden des WC_Countries zuzugreifen Klasse:

WC()->countries->get_base_address();
WC()->countries->get_base_address_2();
WC()->countries->get_base_city();
WC()->countries->get_base_postcode();
WC()->countries->get_base_state();
WC()->countries->get_base_country();

Zum einen kann sich der Ort, an dem die Informationen gespeichert werden, ändern, die Methode zum Abrufen der Informationen bleibt jedoch gleich. Und zweitens, falls ein Plugin den Wert mithilfe von Filtern ändert. Betrachtet man die Quelle , so wird letzteres offensichtlich:

public function get_base_address() {
    $base_address = get_option( 'woocommerce_store_address', '' );
    return apply_filters( 'woocommerce_countries_base_address', $base_address );
}

Zusätzliche Information:

2
passatgt

Es gibt keine spezielle Funktion in WooCommerce, um Shop-URLs (oder andere URLs) zurückzugeben (zumindest die, die ich kenne). Es gibt jedoch eine Funktion wc_get_page_id(), die die Seiten-ID nach Namen abruft, und die ID kann in der Funktion get_permalink() von WP verwendet werden, um die URL zurückzugeben.

Hier sind einige Beispiele:

Shop-Seiten-URL:

echo get_permalink( wc_get_page_id( 'shop' ) );

URL der Warenkorbseite:

echo get_permalink( wc_get_page_id( 'cart' ) );

URL der Checkout-Seite:

echo get_permalink( wc_get_page_id( 'checkout' ) );

URL meiner Kontoseite:

echo get_permalink( wc_get_page_id( 'myaccount' ) );

1
butlerblog