php - 在 WooCommerce 单品页面上发布显示运输数据
问题描述
为了提供更多信息,使用最新的 WC 和 WP,我在 WooCommerce 产品页面上显示运输数据时收到两个通知。
Notice: Undefined index: min_amount on line 89 and 91
我的主题functions.php
文件中有代码,它运行良好,直到我开始调试所有内容(wp-config
)。
错误指的是这两行:
$cost = $instance['cost'] ? $instance['cost'] : $instance['min_amount'];
$above = $instance['min_amount'] ? 'above ' : '';
任何人都可以对我哪里出错/我在这里做错了什么有所了解吗?
这是我的完整代码:
add_action( 'woocommerce_after_add_to_cart_form', 'shipping_on_product_page' );
function shipping_on_product_page() {
// get all zones
$zones = WC_Shipping_Zones::get_zones();
// get the shop base country
$base_country = WC()->countries->get_base_country();
$base_city = WC()->countries->get_base_city();
// start display of table
echo '<div>' . __( 'Available Shipping', 'woocommerce' );
echo '<br><small><span class="shipping-time-cutoff">All orders are shipped from the '.$base_country.'. Order before 12AM Mon-Fri for same day delivery within '.$base_city.'. Order before 3PM Mon-Thu for next day delivery.</span></small>';
echo '<small><table class="shipping-and-delivery-table">';
// get name of each zone and each shipping method for each zone
foreach ( $zones as $zone_id => $zone ) {
echo '<tr><td>';
echo '<strong>' . $zone['zone_name'] . '</strong>' . '</td><td>';
$zone_shipping_methods = $zone['shipping_methods'];
foreach ( $zone_shipping_methods as $index => $method ) {
$instance = $method->instance_settings;
$cost = $instance['cost'] ? $instance['cost'] : $instance['min_amount'];
$above = $instance['min_amount'] ? 'above ' : '';
echo $instance['title'] . ': ' . $above . '<strong>' . wc_price( $cost ) . '</strong>' . '<br>';
}
echo '</td></tr>';
}
echo '</table></small></div>';
}
解决方案
检查是否实际设置了这些值,因为每种运输方式并非总是如此。
所以你得到:
function action_woocommerce_after_add_to_cart_form() {
// get all zones
$zones = WC_Shipping_Zones::get_zones();
// get the shop base country
$base_country = WC()->countries->get_base_country();
$base_city = WC()->countries->get_base_city();
// start display of table
echo '<div>' . __( 'Available Shipping', 'woocommerce' );
echo '<br><small><span class="shipping-time-cutoff">All orders are shipped from the '.$base_country.'. Order before 12AM Mon-Fri for same day delivery within '.$base_city.'. Order before 3PM Mon-Thu for next day delivery.</span></small>';
echo '<small><table class="shipping-and-delivery-table">';
// get name of each zone and each shipping method for each zone
foreach ( $zones as $zone_id => $zone ) {
echo '<tr><td>';
echo '<strong>' . $zone['zone_name'] . '</strong>' . '</td><td>';
$zone_shipping_methods = $zone['shipping_methods'];
foreach ( $zone_shipping_methods as $index => $method ) {
$instance = $method->instance_settings;
if ( isset( $instance['min_amount'] ) ) {
$instance_min_amount = $instance['min_amount'];
} else {
$instance_min_amount = 0;
}
if ( isset( $instance['cost'] ) ) {
$instance_cost = $instance['cost'];
} else {
$instance_cost = 0;
}
$cost = $instance_cost ? $instance_cost : $instance_min_amount;
$above = $instance_min_amount ? 'above ' : '';
echo $instance['title'] . ': ' . $above . '<strong>' . wc_price( $cost ) . '</strong>' . '<br>';
}
echo '</td></tr>';
}
echo '</table></small></div>';
}
add_action( 'woocommerce_after_add_to_cart_form', 'action_woocommerce_after_add_to_cart_form', 10, 0 );
推荐阅读
- unit-testing - 'meteor test' 没有接收到 *.test[s].js
- python - 熊猫数据框无法为切片子集赋值
- javascript - 在 Laravel 中使用 Ajax 在引导模式上显示数据库
- java - 使用 docx4j 将现有幻灯片插入新的 pptx 演示文稿
- c# - UWP - 通过 C# 中的 GPS 传感器显式获取位置坐标
- html - 在 Angular 6 中动态创建 html 导航选项卡
- c# - 如何处理文本并从哈希c#中获取文本
- android - Android 上的 OnOptionsItemSelected 无法在活动中工作
- sql-server - 无法将节点 js 连接到 SQL 服务器
- javascript - Handlebars helper 正则表达式用于标记多选输入框中的选择框