web-dev-qa-db-fra.com

WooCommerce obtenir l'adresse du magasin physique

Dans les paramètres d’administration WooCommerce (/wp-admin/admin.php?page=wc-settings), plusieurs champs permettent de définir l’adresse du magasin (rue, ville, pays).

Comment peut-on récupérer cela dans les modèles d'un thème? Je ne voudrais pas coder de telles informations dans le thème.

2
Buzut

L'adresse physique du magasin (et de nombreux autres paramètres) est stockée dans la table d'options de WP (wp_options où "wp_" est le préfixe de la table utilisée sur le site).

Les noms des options sont:

  • woocommerce_store_address
  • woocommerce_store_address_2
  • woocommerce_store_city
  • woocommerce_store_postcode
  • woocommerce_default_country

Le problème est la valeur woocommerce_default_country. Cela stocke les informations pays ET état/province en fonction de votre sélection dans le sélecteur déroulant "Pays/État" dans les paramètres. Si c'est juste un pays, ce sera le code de pays, mais si c'est le pays "plus", quelque chose, il sera séparé par deux points ":" (comme "US: IL").

Voici donc un moyen générique de créer une adresse aux États-Unis. Les autres pays/provinces peuvent légèrement varier en fonction (1) du contenu de la valeur woocommerce_default_country (qui peut être un pays seul) et (2) de la manière dont vous souhaitez afficher les informations.

// 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;

Cela pourrait certainement être un peu condensé et rendu plus net, mais j’étais verbeuse dans le code pour plus de clarté.

En outre, en fonction de l'emplacement du magasin, etc., vous pouvez ou non inclure les informations sur le pays/l'état, ou vous pouvez modifier le résultat en fonction de la valeur enregistrée. Par exemple, dans le cas d’adresses américaines, le pays est "US" et non "USA", et l’information sur l’état est le code de courrier abrégé ("IL" pour l’Illinois). Ainsi, la valeur réelle et la manière dont vous envisagez de l’utiliser déterminent ce que vous voulez en faire pour la sortie. (J'espère que cela a du sens.)

3
butlerblog

Il n'y a pas de fonction spécifique dans WooCommerce pour renvoyer les URL de boutique (ou autres) (du moins que je sache). Mais il existe une fonction wc_get_page_id() qui obtiendra l'ID de la page par son nom. Cet ID peut être utilisé dans la fonction get_permalink() de WP pour renvoyer l'URL.

Voici quelques exemples:

URL de la page de la boutique:

echo get_permalink( wc_get_page_id( 'shop' ) );

URL de la page du panier:

echo get_permalink( wc_get_page_id( 'cart' ) );

URL de la page de paiement:

echo get_permalink( wc_get_page_id( 'checkout' ) );

URL de la page de mon compte:

echo get_permalink( wc_get_page_id( 'myaccount' ) );

1
butlerblog