如何在 Woocommerce 中获取 Shipping Methods 自定义附加数据?
How to get Shipping Methods custom additional data in Woocommerce?
由此 comment 我在运输方式中创建了自定义字段“运输方式说明”:
add_action('woocommerce_init', 'shipping_instance_form_fields_filters');
function shipping_instance_form_fields_filters(){
$shipping_methods = WC()->shipping->get_shipping_methods();
foreach($shipping_methods as $shipping_method) {
add_filter('woocommerce_shipping_instance_form_fields_' . $shipping_method->id, 'shipping_instance_form_add_extra_fields');
}
}
function shipping_instance_form_add_extra_fields( $settings ){
$settings['shipping_method_description'] = [
'title' => 'Shipping Method Description',
'type' => 'text',
'placeholder' => 'shipping',
'description' => ''
];
return $settings;
}
但我无法理解如何在我的自定义运输模板 (/cart/cart-shipping.php) 中的前端获取此数据,例如:
<?php if ( $available_methods ) : ?>
<?php foreach ( $available_methods as $method ) : ?>
<p><?php /* Method Description ??? */ ?></p>
<p><?= $method->get_label(); ?></p>
<p><?= $method->cost; ?></p>
<?php endforeach; ?>
<?php endif; ?>
我comment不清楚如何获取此实例设置。
谁能提出解决方案?
WooCommerce 送货方式设置存储在 option_name
列的 wp_options
table 中,如下所示 (其中 $methods_id
是名称(slug)和 $instance_id
数字标识符):
$option_name = 'woocommerce_' . $methods_id . '_' . $instance_id . '_settings';
要获取送货方式设置(数组),您可以使用 WordPress get_option()
函数,例如:
<?php
if ( $available_methods ) {
foreach ( $available_methods as $rate ) {
$data = get_option( 'woocommerce_' . $rate->method_id . '_' . $rate->instance_id . '_settings' );
if ( isset($data['shipping_method_description']) ) {
echo '<p>' . $data['shipping_method_description'] . '</p>';
}
echo '<p>' . $rate->label . '</p>';
echo '<p>' . $rate->cost . '</p>';
}
}
?>
经过测试并有效。
由此 comment 我在运输方式中创建了自定义字段“运输方式说明”:
add_action('woocommerce_init', 'shipping_instance_form_fields_filters');
function shipping_instance_form_fields_filters(){
$shipping_methods = WC()->shipping->get_shipping_methods();
foreach($shipping_methods as $shipping_method) {
add_filter('woocommerce_shipping_instance_form_fields_' . $shipping_method->id, 'shipping_instance_form_add_extra_fields');
}
}
function shipping_instance_form_add_extra_fields( $settings ){
$settings['shipping_method_description'] = [
'title' => 'Shipping Method Description',
'type' => 'text',
'placeholder' => 'shipping',
'description' => ''
];
return $settings;
}
但我无法理解如何在我的自定义运输模板 (/cart/cart-shipping.php) 中的前端获取此数据,例如:
<?php if ( $available_methods ) : ?>
<?php foreach ( $available_methods as $method ) : ?>
<p><?php /* Method Description ??? */ ?></p>
<p><?= $method->get_label(); ?></p>
<p><?= $method->cost; ?></p>
<?php endforeach; ?>
<?php endif; ?>
我comment不清楚如何获取此实例设置。
谁能提出解决方案?
WooCommerce 送货方式设置存储在 option_name
列的 wp_options
table 中,如下所示 (其中 $methods_id
是名称(slug)和 $instance_id
数字标识符):
$option_name = 'woocommerce_' . $methods_id . '_' . $instance_id . '_settings';
要获取送货方式设置(数组),您可以使用 WordPress get_option()
函数,例如:
<?php
if ( $available_methods ) {
foreach ( $available_methods as $rate ) {
$data = get_option( 'woocommerce_' . $rate->method_id . '_' . $rate->instance_id . '_settings' );
if ( isset($data['shipping_method_description']) ) {
echo '<p>' . $data['shipping_method_description'] . '</p>';
}
echo '<p>' . $rate->label . '</p>';
echo '<p>' . $rate->cost . '</p>';
}
}
?>
经过测试并有效。