Automattic\WooCommerce\Internal\Orders
OrderActionsRestController::get_available_email_templates
Determine which email templates are available for the given order.
Метод класса: OrderActionsRestController{}
Хуки из метода
Возвращает
WC_Email[]
.
Использование
// private - только в коде основоного (родительского) класса $result = $this->get_available_email_templates( $order ): array;
- $order(WC_Order) (обязательный)
- The order in question.
Код OrderActionsRestController::get_available_email_templates() OrderActionsRestController::get available email templates WC 9.9.4
private function get_available_email_templates( WC_Order $order ): array { $all_email_templates = WC()->mailer()->emails; $order_status = $order->get_status( 'edit' ); $unavailable_statuses = array( OrderStatus::AUTO_DRAFT, OrderStatus::DRAFT, OrderStatus::NEW, OrderStatus::TRASH, ); if ( ! $order->get_billing_email() || in_array( $order_status, $unavailable_statuses, true ) ) { return array(); } $valid_template_classes = array( 'WC_Email_Customer_Invoice', ); if ( $this->order_is_partially_refunded( $order ) ) { $valid_template_classes[] = 'WC_Email_Customer_Refunded_Order'; } switch ( $order_status ) { case OrderStatus::COMPLETED: $valid_template_classes[] = 'WC_Email_Customer_Completed_Order'; break; case OrderStatus::FAILED: $valid_template_classes[] = 'WC_Email_Customer_Failed_Order'; break; case OrderStatus::ON_HOLD: $valid_template_classes[] = 'WC_Email_Customer_On_Hold_Order'; break; case OrderStatus::PROCESSING: $valid_template_classes[] = 'WC_Email_Customer_Processing_Order'; break; case OrderStatus::REFUNDED: $valid_template_classes[] = 'WC_Email_Customer_Refunded_Order'; break; } /** * Filter the list of valid email templates for a given order. * * Note that the email class must also exist in WC_Emails::$emails. * * When adding a custom email template to this list, a callback must also be added to trigger the sending * of the email. See the `woocommerce_rest_order_actions_email_send` action hook. * * @since 9.8.0 * * @param string[] $valid_template_classes Array of email template class names that are valid for a given order. * @param WC_Order $order The order. */ $valid_template_classes = apply_filters( 'woocommerce_rest_order_actions_email_valid_template_classes', $valid_template_classes, $order ); $valid_template_classes = array_filter( array_unique( $valid_template_classes ), 'is_string' ); $valid_templates = array_fill_keys( $valid_template_classes, '' ); return array_intersect_key( $all_email_templates, $valid_templates ); }