WooCommerce获取实体店地址

时间:2018-11-15 作者:Buzut

在WooCommerce管理设置(/wp admin/admin.php?page=wc settings)中,有几个字段可以设置商店地址(街道、城市、国家)。

如何在主题的模板中检索此内容?我不想把这些信息硬编码到主题中。

4 个回复
最合适的回答,由SO网友:butlerblog 整理而成

存储的物理地址(以及许多其他设置)存储在WP的选项表(WP\\U选项,其中“WP\\U”是站点上使用的表前缀)中。

选项名称为:

woocommerce\\u store\\u address(woocommerce\\u store\\u address\\u 2)woocommerce\\u store\\u city(woocommerce\\u store\\u邮政编码)woocommerce\\u store\\u postcode(woocommerce\\u default\\u country(woocommerce\\u default\\u country)值是个棘手的问题。根据您在设置中的“国家/州”下拉选择器中的选择,存储国家和州/省信息。如果它只是一个国家,它将是国家代码,但如果它是国家“加上”某物,它将用冒号“:”(例如“US:IL”)分隔。

下面是一个通用的美国地址。其他国家/省份可能略有不同,具体取决于(1)woocommerce\\u default\\u 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”)。因此,实际值以及您打算如何使用它将决定您想要对其执行的输出操作。(希望这有意义。)

SO网友:passatgt

而不是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();
首先,信息存储的位置可能会改变,但获取信息的方法保持不变。其次,如果插件使用过滤器更改值。查看source 后者显而易见:

public function get_base_address() {
    $base_address = get_option( \'woocommerce_store_address\', \'\' );
    return apply_filters( \'woocommerce_countries_base_address\', $base_address );
}
其他信息:

SO网友:butlerblog

WooCommerce中没有返回店铺(或其他)URL的特定功能(至少我知道)。但有一个功能wc_get_page_id() 这将按名称获取页面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\' ) );

SO网友:Cédric Moris Kelly

要获取店铺所在国家/地区的全名:

WC()->countries->countries[WC()->countries->get_base_country()];

结束

相关推荐

Wp-Content/Themes/文件夹中的index.php文件

今晚,当我注意到一个索引时,我正在手动将我正在处理的主题上传到我的wordpress安装中。我的主题文件夹中的php文件。我打开了文件,其中只包含以下三行代码:<?php //silence is golden ?> 这让我很担心,起初我想可能是我不小心把文件上传到了主题目录,但文件的内容并不是我想放的任何东西。所以我的意思是,应该有一个索引。我的wp内容/主题/目录中的php文件?还是有人把它放在那里了。或现在我想起来了,可能是我无意中上传了这个文件,然后一个“黑