Ваш разработчик использовал этот официальный фрагмент woocommerce (устарел, поскольку ему 3 года) и использует woocommerce_email_attachments
фильтр-хук.
Этот фильтр-крючок определен:
- один раз (1) в
WC_Email
классе (с аргументом $order
)
- три раза (3) в
WC_emails
Класс ( без аргумент $order
)
Таким образом, WC_Order
Object $order
определен только в WC_Email
классе в качестве третьего аргумента.
Это означает, что этот устаревший официальный код необходимо настроить следующим образом:
add_filter( 'woocommerce_email_attachments', 'woocommerce_emails_attach_downloadables', 10, 3 );
function woocommerce_emails_attach_downloadables( $attachments, $email_id, $order ) {
// Avoiding errors and problems
if ( ! is_a( $order, 'WC_Order' ) || ! isset( $email_id ) ) {
return $attachments;
}
// ===> Your custom code goes Here <===
return $attachments;
}
Это должно работать, избегая проблем.
Итак, как вы и просили, этот хук также используется в следующих специфических уведомлениях о продукте с очень разными аргументами хука :
- Вкл. Уведомление о низком запасе (с
'low_stock'
и $product
в качестве 2-го и 3-го аргументов)
- Вкл. Уведомление «Нет на складе» (с
'no_stock'
и $product
в качестве 2-го и 3-го аргументов)
- Вкл. Уведомление «Задержка» (с
'backorder'
и $args
в качестве 2-го и 3-го аргументов)
Таким образом, здесь 2-й аргумент - это состояние склада $stock_status
, а 3-й аргумент - это WC_Product
объект $product
(или массив $args
) .
Тогда В этих 3 уведомлениях объект $order
не существует , так как это может быть WC_Product
Объект, массив, пустой массив или ноль.