我需要在我的网站页面上显示一些订单详情。
我找到了能够满足我需要的代码:
function get_order_details($order_id) {
$order = wc_get_order( $order_id );
$order_meta = get_post_meta($order_id);
echo '<h3>THE ORDER META DATA (Using the array syntax notation):</h3>';
echo '_billing_first_name: ' . $order_meta[_billing_first_name][0] . '<br>';
echo '_billing_last_name: ' . $order_meta[_billing_last_name][0] . '<br>';
echo '_billing_address_index: ' . $order_meta[_billing_address_index][0] . '<br>';
echo '_shipping_address_index: ' . $order_meta[_shipping_address_index][0] . '<br>';
echo '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <br><br>';
}
get_order_details(100);
如果将此代码插入function.php
,则可行。有关订单的信息将插入顶部的所有页面上,直接位于标题上方。
我想要别的东西,但我不知道怎么做。该网站有一个页面,其中有一个表单:
<form action="/wp-content/themes/storefront/order_number.php" method="post">
<label for="order_number">Order number</label><br>
<input type="text" name="order_number" size="30"><br>
<input type="submit" id="submit" value="Find and output"><br>
</form>
我尝试过:
1)在自定义文件“order_number.php
”中添加此功能,但它不起作用。
发生错误:
致命错误:在第4行的Z:\ home \ magazinehard.ru \ www \ wp-content \ themes \ storefront \ order_number.php中调用未定义的函数wc_get_order()。
2)在“order_number.php
”中添加“include'functions.php'”。
发生错误:
致命错误:在第11行的Z:\ home \ magazinehard.ru \ www \ wp-content \ themes \ storefront \ functions.php中调用未定义的函数wp_get_theme()。
如何在“order_number.php
”文件中使用此功能。或者可以只使用文件“functions.php
”中的必要函数,而忽略其他函数?
如果无法做到这一切,是否有其他方法可以在页面上显示订单的详细信息?
我不擅长PHP,但我需要写一个文凭项目。
感谢任何帮助。
答案 0 :(得分:1)
已更新 - 请尝试以下操作:
// Function that output order details
function display_order_details() {
// Exit if Order number not submitted
if ( ! isset( $_POST['order_number'] ) )
return; // Exit
if( $_POST['order_number'] > 0 )
$order_id = sanitize_text_field( $_POST['order_number'] );
else
return; // Exit
## $order = wc_get_order( $order_id ); // Not really needed in this case
echo '<h3>THE ORDER META DATA (Using the array syntax notation):</h3>
<p>';
$billing_first_name = get_post_meta( $order_id, '_billing_first_name', true );
if( ! empty( $billing_first_name ) )
echo 'Billing first name: ' . $billing_first_name . '<br>';
$billing_last_name = get_post_meta( $order_id, '_billing_last_name', true );
if( ! empty( $billing_last_name ) )
echo 'Billing last name: ' . $billing_last_name . '<br>';
$billing_address_index = get_post_meta( $order_id, '_billing_address_index', true );
if( ! empty( $billing_address_index ) )
echo 'Billing details: ' . $billing_address_index . '<br>';
$shipping_address_index = get_post_meta( $order_id, '_shipping_address_index', true );
if( ! empty( $shipping_address_index ) )
echo 'Shipping details: ' . $shipping_address_index;
echo '</p><br>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <br><br>';
}
// Shotcode that display the form and output order details once submitted
add_shortcode( 'order_details', 'form_get_order_details' );
function form_get_order_details(){
ob_start(); // Buffering data
?>
<form action="" method="post">
<label for="order_number">Order number</label><br>
<input type="text" name="order_number" size="30"><br><br>
<input type="submit" id="submit" value="Find and output"><br>
</form>
<?php
display_order_details();
return ob_get_clean(); // Output data from buffer
}
代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作。
可能的用途:
[order_details]
。echo do_shortcode("[order_details]");
<?php echo do_shortcode("[order_details]"); ?>
一旦提交订单编号,它应该可以工作并显示订单详细信息