Wooccommerce的PHP代码出现服务器错误



我制作了这个短代码来向用户显示订单的总价值。

它确实可以显示值,但当我试图访问我的网站时,它一直给我这个错误消息;此网站出现严重错误。有关说明,请查看您的网站管理员电子邮件收件箱">

错误似乎在这一行$order_line_items = $order->get_items();中。

Wordpress通过电子邮件发送给我的错误详细信息

An error of type E_ERROR was caused in line 67 of the file /home/example.com/wp-content/themes/hello-theme-child-master/functions.php. Error message: Uncaught Error: Call to a member function get_items() on bool in /home/ example.com/wp-content/themes/hello-theme-child-master/functions.php:67
Stack trace:
#0 /home/ example.com/wp-includes/shortcodes.php(356): getOrderItemList('', '', 'order-line-item')
#1 [internal function]: do_shortcode_tag(Array)
#2 /home/example.com/wp-includes/shortcodes.php(228): preg_replace_callback('/\[(\[?)(order\...', 'do_shortcode_ta...', '

代码

function getOrderItemList() {
// get order ID.
$order_id         = absint( $wp->query_vars['order-received'] );
$order            = wc_get_order( $order_id );
$order_line_items = $order->get_items();
$total = $order->get_total();
return $total;
}
add_shortcode( 'order-line-item', 'getOrderItemList' );

谢谢

似乎wc_get_order((返回了false。这是WordPress(和php(对";我找不到你想要的东西;。在这种情况下,这可能意味着没有编号为$order_id的订单。

编辑尝试使用$order_id = get_query_var( 'order-received' );获取订单id。

也许这样的事情会有所帮助。

function getOrderItemList() {
$order_id = get_query_var( 'order-received' );
if ( ! $order_id ) {
return '';
}
$order    = wc_get_order( $order_id );
if ( ! $order ) {
return '';
}
$order_line_items = $order->get_items();
$total = $order->get_total();
return $total;
}

为了进行故障排除,您可以将return 'bogus $order'替换为return ''

最新更新