주문 속성에 직접 액세스하지 마십시오(WooCommerce 3.0).
저는 방금 제 지역 WooCommerce 웹사이트를 3.0으로 업그레이드했습니다.모든 것이 정상적으로 정상적으로 동작하지만 디버깅을 켜면 다음과 같은 알림이 수백 개 표시됩니다.
[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
따라서 WooCommerce는 주문 데이터를 직접 호출할 수 있는 것을 철회하고 있는 것으로 보입니다.이 코드가 트리거된 예 중 하나는 내 함수의 이 기능입니다.php 파일:
function eden_woocommerce_order_number($original, $order)
{
return 'EDN-' . str_pad($order->id, 10, 0, STR_PAD_LEFT);
}
이 함수는 단순히 주문 ID의 선두에 "EDN"을 추가하여 10글자씩 채우는데, WooCommerce는 내가 부르는 방식을 좋아하지 않습니다.$order
- 3.0이 만족하는 기능을 다시 쓰는 가장 좋은 방법은 무엇일까요?
"ID가 잘못 호출되었습니다.주문 속성에 직접 액세스해서는 안 됩니다."
해라$order->get_id()
어쩌면 다른 사람들에게도 도움이 될지도 몰라.다음은 매직 기능을 통해 직접 액세스되는 값의 모든 기능에 대한 내용입니다.
이 함수는 Woocommerce 3.0부터입니다.
if ( 'completed_date' === $key ) {
return $this->get_date_completed() ? gmdate( 'Y-m-d H:i:s', $this->get_date_completed()->getOffsetTimestamp() ) : '';
} elseif ( 'paid_date' === $key ) {
return $this->get_date_paid() ? gmdate( 'Y-m-d H:i:s', $this->get_date_paid()->getOffsetTimestamp() ) : '';
} elseif ( 'modified_date' === $key ) {
return $this->get_date_modified() ? gmdate( 'Y-m-d H:i:s', $this->get_date_modified()->getOffsetTimestamp() ) : '';
} elseif ( 'order_date' === $key ) {
return $this->get_date_created() ? gmdate( 'Y-m-d 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 );
}
Woo get 함수를 호출해야 합니다.더하다get_ ()
예를 들어 다음과 같습니다.$order->status
로.$order->get_status()
언급URL : https://stackoverflow.com/questions/43231684/order-properties-should-not-be-accessed-directly-woocommerce-3-0
'source' 카테고리의 다른 글
wc-template-functions 내에서 WooCommerce 함수를 변경할 수 있습니까?php' 파일 또는 'functions'를 계속 사용할까요?php' 파일? (0) | 2023.03.23 |
---|---|
MongoDB 데이터 디렉토리 /data/db를 찾을 수 없습니다. (0) | 2023.03.23 |
여러 인수로 함수를 바인딩하는 AngularJS 디렉티브 (0) | 2023.03.23 |
스프링 데이터 JPA를 사용하여 열 하나를 선택합니다. (0) | 2023.03.23 |
GROUP BY는 어떻게 작동합니까? (0) | 2023.03.23 |