WooCommerceの管理設定(/wp-admin/admin.php?page=wc-settings)には、店舗の住所(番地、市、国)を設定するためのフィールドがいくつかあります。
これをテーマのテンプレートから取得する方法を教えてください。そのような情報をテーマにハードコーディングしたくはありません。
店舗の物理アドレス(および他の多くの設定)は、WPのオプションテーブル(wp_options、 "wp_"はサイトで使用されているテーブルプレフィックス)に格納されます。
オプション名は以下のとおりです。
難しいのは、woocommerce_default_countryの値です。設定の[国/州]ドロップダウンセレクターでの選択に応じて、国と州/県の情報が保存されます。国だけの場合は国コードになりますが、国の「プラス」の場合はコロン「:」で区切られます(「US:IL」など)。
したがって、以下は米国の住所の一般的なやり方です。他の国/地域は、(1)woocommerce_default_country値に含まれるもの(単なる国の場合もあります)、および(2)情報の出力方法によって多少異なる場合があります。
// 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;
これは確かにかなり要約され、よりきれいにされることができます、しかし私は明快さのためにコードで冗長でした。
また、店舗の場所などに応じて、国/州の情報をまったく含めたくない場合や、保存した値に基づいて出力内容を変更したい場合があります。例えば、米国の住所の場合、国は「米国」ではなく「米国」であり、州情報は省略されたメールコード(すなわちイリノイの場合は「IL」)である。そのため、実際の値とそれをどのように使用するつもりなのかによって、出力に使用する値が決まります。 (それが理にかなっていることを願っています。)
上記のget_option()
メソッドの代わりに、WooCommerce WC()
のメインインスタンスを介して組み込み関数を使用し、それによって WC_Countries
クラスのメソッドにアクセスすることをお勧めします。
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();
1つは、情報が格納される場所が変わる可能性があるということですが、それを取得する方法は変わりません。そして次に、プラグインがフィルタを使って値を変更した場合。 source を見ると明らかになります。
public function get_base_address() {
$base_address = get_option( 'woocommerce_store_address', '' );
return apply_filters( 'woocommerce_countries_base_address', $base_address );
}
追加情報:
WooCommerceには、ショップ(または他の)URLを返すための特別な機能はありません(少なくとも私が知っていること)。しかし、名前でページIDを取得する関数wc_get_page_id()
があり、そのIDはWPのget_permalink()
関数でURLを返すために使用できます。
ここではいくつかの例を示します。
ショップページのURL:
echo get_permalink( wc_get_page_id( 'shop' ) );
カートページのURL:
echo get_permalink( wc_get_page_id( 'cart' ) );
チェックアウトページのURL:
echo get_permalink( wc_get_page_id( 'checkout' ) );
マイアカウントページのURL:
echo get_permalink( wc_get_page_id( 'myaccount' ) );