Woocommerce 结帐页面中的自定义统一费率描述文本
Custom Flat Rate Description Text in Woocommerce checkout page
我在 Shipping Zones 中设置了两种固定费率的运输方式。在结账时,这两种送货方式都可用。
我想在每个统一运费选项下显示文字说明。在 WooCommerce 中似乎没有任何选项可以执行此操作。
我已经尝试了以下代码,但不用说它不起作用:
add_filter( 'woocommerce_page_title', 'woo_shop_page_title');
function wc_get_shipping_zone( $package ) {
if( $package == 'flat_rate:1') {
return "<p>Arriving on your chosen date between 9am - 1pm Perfect for business addresses & special occasions</p>";
}
if( $package == 'flat_rate:2') {
return "<p>Arriving on your chosen date between 9am - 7pm Perfect for residential addresses</p>";
}
}
任何人都可以帮助完成这项工作吗?
这就是我希望结帐时的描述:
向运输 "flat rate" 方法添加附加信息的正确挂钩函数是:
add_action( 'woocommerce_after_shipping_rate', 'action_after_shipping_rate', 20, 2 );
function action_after_shipping_rate ( $method, $index ) {
// Targeting checkout page only:
if( is_cart() ) return; // Exit on cart page
if( 'flat_rate:1' === $method->id ) {
echo __("<p>Arriving on your chosen date between 9am - 1pm Perfect for business addresses & special occasions</p>");
}
if( 'flat_rate:2' === $method->id ) {
echo __("<p>Arriving on your chosen date between 9am - 7pm Perfect for residential addresses</p>");
}
}
此代码位于您的活动子主题(或活动主题)的 function.php 文件中。已测试并有效。
一个更稳健的解决方案是在送货方式表单中添加一个新的描述字段:
/**
* Add extra form field to all shipping methods available
*/
add_action( 'woocommerce_loaded', 'smdfw_add_filters' );
function smdfw_add_filters() {
$shipping_methods = WC()->shipping->get_shipping_methods();
foreach ( $shipping_methods as $id => $shipping_method ) {
add_filter( "woocommerce_shipping_instance_form_fields_$id", 'smdfw_add_form_fields' );
}
}
/**
* Add description field to shipping method form
*/
function smdfw_add_form_fields( $fields ) {
$fields['description'] = array(
'title' => __( 'Description', 'smdfw' ),
'type' => 'textarea',
);
return $fields;
}
然后在前端显示:
/**
* Load description as metadata
*/
add_filter( 'woocommerce_shipping_method_add_rate_args', 'smdfw_add_rate_description_arg', 10, 2 );
function smdfw_add_rate_description_arg( $args, $method ) {
$args['meta_data']['description'] = $method->get_option( 'description' );
return $args;
}
/**
* Display description field after method label
*/
add_action( 'woocommerce_after_shipping_rate', 'smdfw_output_shipping_rate_description', 10 );
function smdfw_output_shipping_rate_description( $method ) {
$meta_data = $method->get_meta_data();
if ( array_key_exists( 'description', $meta_data ) ) {
echo '<div><small class="smdfw">' . esc_html( $meta_data['description'] ) . '</small></div>'
}
}
我需要在许多 WooCommmerce 项目上执行此操作,所以我用它制作了一个免费插件:https://wordpress.org/plugins/wc-shipping-method-description/
我在 Shipping Zones 中设置了两种固定费率的运输方式。在结账时,这两种送货方式都可用。
我想在每个统一运费选项下显示文字说明。在 WooCommerce 中似乎没有任何选项可以执行此操作。
我已经尝试了以下代码,但不用说它不起作用:
add_filter( 'woocommerce_page_title', 'woo_shop_page_title');
function wc_get_shipping_zone( $package ) {
if( $package == 'flat_rate:1') {
return "<p>Arriving on your chosen date between 9am - 1pm Perfect for business addresses & special occasions</p>";
}
if( $package == 'flat_rate:2') {
return "<p>Arriving on your chosen date between 9am - 7pm Perfect for residential addresses</p>";
}
}
任何人都可以帮助完成这项工作吗?
这就是我希望结帐时的描述:
向运输 "flat rate" 方法添加附加信息的正确挂钩函数是:
add_action( 'woocommerce_after_shipping_rate', 'action_after_shipping_rate', 20, 2 );
function action_after_shipping_rate ( $method, $index ) {
// Targeting checkout page only:
if( is_cart() ) return; // Exit on cart page
if( 'flat_rate:1' === $method->id ) {
echo __("<p>Arriving on your chosen date between 9am - 1pm Perfect for business addresses & special occasions</p>");
}
if( 'flat_rate:2' === $method->id ) {
echo __("<p>Arriving on your chosen date between 9am - 7pm Perfect for residential addresses</p>");
}
}
此代码位于您的活动子主题(或活动主题)的 function.php 文件中。已测试并有效。
一个更稳健的解决方案是在送货方式表单中添加一个新的描述字段:
/**
* Add extra form field to all shipping methods available
*/
add_action( 'woocommerce_loaded', 'smdfw_add_filters' );
function smdfw_add_filters() {
$shipping_methods = WC()->shipping->get_shipping_methods();
foreach ( $shipping_methods as $id => $shipping_method ) {
add_filter( "woocommerce_shipping_instance_form_fields_$id", 'smdfw_add_form_fields' );
}
}
/**
* Add description field to shipping method form
*/
function smdfw_add_form_fields( $fields ) {
$fields['description'] = array(
'title' => __( 'Description', 'smdfw' ),
'type' => 'textarea',
);
return $fields;
}
然后在前端显示:
/**
* Load description as metadata
*/
add_filter( 'woocommerce_shipping_method_add_rate_args', 'smdfw_add_rate_description_arg', 10, 2 );
function smdfw_add_rate_description_arg( $args, $method ) {
$args['meta_data']['description'] = $method->get_option( 'description' );
return $args;
}
/**
* Display description field after method label
*/
add_action( 'woocommerce_after_shipping_rate', 'smdfw_output_shipping_rate_description', 10 );
function smdfw_output_shipping_rate_description( $method ) {
$meta_data = $method->get_meta_data();
if ( array_key_exists( 'description', $meta_data ) ) {
echo '<div><small class="smdfw">' . esc_html( $meta_data['description'] ) . '</small></div>'
}
}
我需要在许多 WooCommmerce 项目上执行此操作,所以我用它制作了一个免费插件:https://wordpress.org/plugins/wc-shipping-method-description/