Cannot access order properties directly - WooCommerce 3.0

I just upgraded my local WooCommerce website to 3.0. Everything works fine, but I noticed that during debugging I received hundreds of the following notifications:

[05-Apr-2017 12:25:00 UTC] PHP Notice: id was called <strong>incorrectly</strong>. Order properties should not be accessed directly. Please see <a href="https://codex.wordpress.org/Debugging_in_WordPress">Debugging in WordPress</a> for more information. (This message was added in version 3.0.) in C:\xampp\htdocs\dev\wp-includes\functions.php on line 4137

Thus, it seems that WooCommerce is dropping the ability to directly call order data. One example of this code is to run this function in my functions.php file:

 function eden_woocommerce_order_number($original, $order) { return 'EDN-' . str_pad($order->id, 10, 0, STR_PAD_LEFT); } 

This function simply adds β€œEDN” to the beginning of the order identifier and fills it with 10 characters, but WooCommerce doesn't like the way I call $order - what would be the best way to rewrite such a function that 3.0 is happy with?

+5
source share
2 answers

he says that "id was not called correctly . Order properties should not be directly accessible."

Try $order->get_id()

+7
source

Maybe this is also good for others. Here are some things that apply to all functions of directly accessible values ​​through a magic function.

This feature is from Woocommerce 3.0

 if ( 'completed_date' === $key ) { return $this->get_date_completed() ? gmdate( 'Ymd H:i:s', $this->get_date_completed()->getOffsetTimestamp() ) : ''; } elseif ( 'paid_date' === $key ) { return $this->get_date_paid() ? gmdate( 'Ymd H:i:s', $this->get_date_paid()->getOffsetTimestamp() ) : ''; } elseif ( 'modified_date' === $key ) { return $this->get_date_modified() ? gmdate( 'Ymd H:i:s', $this->get_date_modified()->getOffsetTimestamp() ) : ''; } elseif ( 'order_date' === $key ) { return $this->get_date_created() ? gmdate( 'Ymd H:i:s', $this->get_date_created()->getOffsetTimestamp() ) : ''; } elseif ( 'id' === $key ) { return $this->get_id(); } elseif ( 'post' === $key ) { return get_post( $this->get_id() ); } elseif ( 'status' === $key ) { return $this->get_status(); } elseif ( 'post_status' === $key ) { return get_post_status( $this->get_id() ); } elseif ( 'customer_message' === $key || 'customer_note' === $key ) { return $this->get_customer_note(); } elseif ( in_array( $key, array( 'user_id', 'customer_user' ) ) ) { return $this->get_customer_id(); } elseif ( 'tax_display_cart' === $key ) { return get_option( 'woocommerce_tax_display_cart' ); } elseif ( 'display_totals_ex_tax' === $key ) { return 'excl' === get_option( 'woocommerce_tax_display_cart' ); } elseif ( 'display_cart_ex_tax' === $key ) { return 'excl' === get_option( 'woocommerce_tax_display_cart' ); } elseif ( 'cart_discount' === $key ) { return $this->get_total_discount(); } elseif ( 'cart_discount_tax' === $key ) { return $this->get_discount_tax(); } elseif ( 'order_tax' === $key ) { return $this->get_cart_tax(); } elseif ( 'order_shipping_tax' === $key ) { return $this->get_shipping_tax(); } elseif ( 'order_shipping' === $key ) { return $this->get_shipping_total(); } elseif ( 'order_total' === $key ) { return $this->get_total(); } elseif ( 'order_type' === $key ) { return $this->get_type(); } elseif ( 'order_currency' === $key ) { return $this->get_currency(); } elseif ( 'order_version' === $key ) { return $this->get_version(); } elseif ( is_callable( array( $this, "get_{$key}" ) ) ) { return $this->{"get_{$key}"}(); } else { return get_post_meta( $this->get_id(), '_' . $key, true ); } 
+9
source

Source: https://habr.com/ru/post/1266358/


All Articles