Reputation: 55
I have seen that there are already some articles on this topic, but unfortunately I have not found a solution for my code.
I’m exporting orders from Woocommerce with custom codes (plugin WP ALL IMPORT) as an XLM file, which has worked very well so far with the PHP code snippets I use.
Now I get this PHP ERROR while exporting.
PHP Error: Uncaught ArgumentCountError: Too few arguments to function
PHP Error: Uncaught ArgumentCountError: Too few arguments to function my_get_order_items(), 0 passed in /www/htdocs/w01c48e0/web/wp-content/plugins/wp-all-export-pro/libraries/WpaeXmlProcessor.php(528) : eval()'d code on line 1 and exactly 1 expected on line 3 of the Functions Editor
MY XML CODE
<?xml version="1.0" encoding="UTF-8"?>
<order>
<!-- BEGIN LOOP -->
<commission>{Bestell ID}</commission>
<production>1</production>
<receiver>
<line1>{Shipping First Name} {Shipping Last Name}</line1>
<line2>{Shipping Company}</line2>
<street>{Shipping Address 1}</street>
<streetnumber>{Shipping Address 2}</streetnumber>
<country_code>{Shipping Country}</country_code>
<zip>{Shipping Postcode}</zip>
<city>{Shipping City}</city>
<email>{Customer Account Email Address}</email>
</receiver>
<items>
[my_get_order_items({Bestell ID})]
</items>
<!-- END LOOP -->
</order>
MY PHP CODE
<?php
function my_get_order_items( $order_id ) {
$order = wc_get_order( absint($order_id) ); // Get the WC_Order object
if ( ! is_a($order, 'WC_Order') ) {
return false; // Exit if not an order
}
$order_details = ""; // Initialize variable as string to store order details
// Loop through order items
foreach ( $order->get_items() as $item ) {
if ( ! ( strpos($item->get_name(), 'KERAMIKTASSE') !== false
|| strpos($item->get_name(), 'BAUMWOLLTASCHE') !== false
|| strpos($item->get_name(), 'SWEATSHIRT') !== false
|| strpos($item->get_name(), 'HOODIE') !== false
|| strpos($item->get_name(), 'T-SHIRT') !== false ) ) {
continue;
}
$product = $item->get_product(); // Get the product object
$product_id = $item->get_product_id(); // Get the product ID
$order_details .= "**LT**item**GT**";
$order_details .= "**LT**ID**GT**" . $product->get_sku() . "**LT**/ID**GT**";
$order_details .= "**LT**produktname**GT**" . $item->get_name() . "**LT**/produktname**GT**";
$order_details .= "**LT**amount**GT**" . $item->get_quantity() . "**LT**/amount**GT**";
$order_details .= "**LT**upload**GT**" . maybe_serialize( get_field( 'upload', $product_id ) ) . "**LT**/upload**GT**";
$order_details .= "**LT**size**GT**" . maybe_serialize( get_field( 'size', $product_id ) ) . "**LT**/size**GT**";
$order_details .= "**LT**groesse**GT**" . $product->get_attribute('pa_groesse') . "**LT**/groesse**GT**";
$order_details .= "**LT**material**GT**" . maybe_serialize( get_field( 'material', $product_id ) ) . "**LT**/material**GT**";
$order_details .= "**LT**print**GT**" . maybe_serialize( get_field( 'print', $product_id ) ) . "**LT**/print**GT**";
$order_details .= "**LT**variante**GT**" . maybe_serialize( get_field( 'variante', $product_id ) ) . "**LT**/variante**GT**";
$order_details .= "**LT**category**GT**" . maybe_serialize( get_field( 'category', $product_id ) ) . "**LT**/category**GT**";
//add options to the output
$order_details .= "**LT**Options**GT**";
if(get_field( 'groupid_115', $product_id )) {
$order_details .= "**LT**Option**GT****LT**ID**GT**" . maybe_serialize( get_field( 'groupid_115', $product_id ) ) . "**LT**/ID**GT****LT**Value**GT**" . maybe_serialize( get_field( 'value_115', $product_id ) ) . "**LT**/Value**GT****LT**/Option**GT**"; }
if(get_field( 'groupid_117', $product_id )) {
$order_details .= "**LT**Option**GT****LT**ID**GT**" . maybe_serialize( get_field( 'groupid_117', $product_id ) ) . "**LT**/ID**GT****LT**Value**GT**" . maybe_serialize( get_field( 'value_117', $product_id ) ) . "**LT**/Value**GT****LT**/Option**GT**"; }
if(get_field( 'groupid_118', $product_id )) {
$order_details .= "**LT**Option**GT****LT**ID**GT**" . maybe_serialize( get_field( 'groupid_118', $product_id ) ) . "**LT**/ID**GT****LT**Value**GT**" . maybe_serialize( get_field( 'value_118', $product_id ) ) . "**LT**/Value**GT****LT**/Option**GT**"; }
}
return $order_details;
}
?>
I haven't changed anything in the code or in the plugin settings. My host switched to PHP 8.0 yesterday (previously PHP 7.2). Is the error message related to this? And what do I have to change in the code to make it work again?
Upvotes: 0
Views: 64