在 WooCommerce 中调用布尔值的成员函数 get_items() 谢谢
Call to a member function get_items() on boolean in WooCommerce thankyou
我正在尝试获取订单详细信息以在我的感谢页面上显示摘要。我遇到的问题是我的这段代码片段破坏了我的 wordpress。我有堆栈跟踪,但我不确定如何修复它。代码对我来说看起来是正确的,因此请确保它不起作用的原因。有谁知道这个堆栈跟踪的含义是什么以及我该如何修复它?
An error of type E_ERROR was caused in line 7 of the file /home4/xxx/public_html/staging/4326/wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()'d code. Error message: Uncaught Error: Call to a member function get_items() on boolean in /home4/xxx/public_html/staging/4326/wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()'d code:7
Stack trace:
#0 /home4/xxx/public_html/staging/4326/wp-includes/shortcodes.php(343): order_table_summary('', '', 'order_table_sum...')
#1 [internal function]: do_shortcode_tag(Array)
#2 /home4/xxx/public_html/staging/4326/wp-includes/shortcodes.php(218): preg_replace_callback('/\[(\[?)(order_...', 'do_shortcode_ta...', '\n
我的代码:
function order_table_summary(){
$order = wc_get_order($order_id);
// Get and Loop Over Order Items
foreach ( $order->get_items() as $item_id => $item ) {
echo $item->get_name() . $item->get_quantity. $item->get_total();
}
}
add_shortcode('order_table_summary', 'order_table_summary');
更新 添加简码
变量 $order_id
未定义,$item->get_quantity
需要是 $item->get_quantity()
并且输出不应该用简码回显,总是返回。
此简码将用于订单接收页面
add_shortcode('order_table_summary', 'display_order_table_summary_thankyou');
function display_order_table_summary_thankyou(){
global $wp;
// If order_id is defined on Order reveived / thankyou page
if ( is_wc_endpoint_url('order-received')
&& isset($wp->query_vars['order-received'])
&& absint($wp->query_vars['order-received']) > 0 ) {
// Get the WC_Order Object
$order = wc_get_order( absint($wp->query_vars['order-received']) );
ob_start(); // Start buffering
echo '<table><tr>
<th>' . __("Product name", "woocommerce") . '</th>
<th>' . __("Quantity", "woocommerce") . '</th>
<th>' . __("Line total", "woocommerce") . '</th>
</tr>';
// Loop Over Order Items
foreach ( $order->get_items() as $item ) {
echo '<tr>
<td>' . $item->get_name() . '</td>
<td>' . $item->get_quantity() . '</td>
<td>' . $item->get_total() . '</td>
</tr>';
}
echo '</table>';
return ob_get_clean(); // Return the buffered content
}
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
用法:
[order_table_summary]
- 或也在 PHP 代码内:
echo do_shortcode('[order_table_summary]');
仅供测试:
add_action( 'woocommerce_thankyou', 'testing_shorcode' );
function testing_shorcode() {
echo do_shortcode('[order_table_summary]');
}
相关:
我正在尝试获取订单详细信息以在我的感谢页面上显示摘要。我遇到的问题是我的这段代码片段破坏了我的 wordpress。我有堆栈跟踪,但我不确定如何修复它。代码对我来说看起来是正确的,因此请确保它不起作用的原因。有谁知道这个堆栈跟踪的含义是什么以及我该如何修复它?
An error of type E_ERROR was caused in line 7 of the file /home4/xxx/public_html/staging/4326/wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()'d code. Error message: Uncaught Error: Call to a member function get_items() on boolean in /home4/xxx/public_html/staging/4326/wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()'d code:7
Stack trace:
#0 /home4/xxx/public_html/staging/4326/wp-includes/shortcodes.php(343): order_table_summary('', '', 'order_table_sum...')
#1 [internal function]: do_shortcode_tag(Array)
#2 /home4/xxx/public_html/staging/4326/wp-includes/shortcodes.php(218): preg_replace_callback('/\[(\[?)(order_...', 'do_shortcode_ta...', '\n
我的代码:
function order_table_summary(){
$order = wc_get_order($order_id);
// Get and Loop Over Order Items
foreach ( $order->get_items() as $item_id => $item ) {
echo $item->get_name() . $item->get_quantity. $item->get_total();
}
}
add_shortcode('order_table_summary', 'order_table_summary');
更新 添加简码
变量 $order_id
未定义,$item->get_quantity
需要是 $item->get_quantity()
并且输出不应该用简码回显,总是返回。
此简码将用于订单接收页面
add_shortcode('order_table_summary', 'display_order_table_summary_thankyou');
function display_order_table_summary_thankyou(){
global $wp;
// If order_id is defined on Order reveived / thankyou page
if ( is_wc_endpoint_url('order-received')
&& isset($wp->query_vars['order-received'])
&& absint($wp->query_vars['order-received']) > 0 ) {
// Get the WC_Order Object
$order = wc_get_order( absint($wp->query_vars['order-received']) );
ob_start(); // Start buffering
echo '<table><tr>
<th>' . __("Product name", "woocommerce") . '</th>
<th>' . __("Quantity", "woocommerce") . '</th>
<th>' . __("Line total", "woocommerce") . '</th>
</tr>';
// Loop Over Order Items
foreach ( $order->get_items() as $item ) {
echo '<tr>
<td>' . $item->get_name() . '</td>
<td>' . $item->get_quantity() . '</td>
<td>' . $item->get_total() . '</td>
</tr>';
}
echo '</table>';
return ob_get_clean(); // Return the buffered content
}
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
用法:
[order_table_summary]
- 或也在 PHP 代码内:
echo do_shortcode('[order_table_summary]');
仅供测试:
add_action( 'woocommerce_thankyou', 'testing_shorcode' );
function testing_shorcode() {
echo do_shortcode('[order_table_summary]');
}
相关: