Automattic\WooCommerce\Internal\Orders
OrderActionsRestController::select_default_template
Select the best email template from available templates using priority ordering.
Method of the class: OrderActionsRestController{}
Hooks from the method
Returns
WC_Email|null.
Usage
// private - for code of main (parent) class only $result = $this->select_default_template( $order, $available_templates ): ?WC_Email;
- $order(WC_Order) (required)
- The order.
- $available_templates(WC_Email[]) (required)
- Already-filtered available templates.
OrderActionsRestController::select_default_template() OrderActionsRestController::select default template code WC 10.7.0
private function select_default_template( WC_Order $order, array $available_templates ): ?WC_Email {
if ( empty( $available_templates ) ) {
return null;
}
$default_preferred_ids = $this->get_default_preferred_template_ids( $order );
/**
* Filter the preferred template IDs for auto-selecting an email template.
*
* Template IDs earlier in the array are preferred. Only templates that
* are also in the available templates list will be considered.
*
* @since 10.7.0
*
* @param string[] $preferred_template_ids Ordered array of template IDs (most preferred first).
* @param WC_Order $order The order.
* @param string[] $available The available template IDs for this order.
*/
$preferred_template_ids = apply_filters(
'woocommerce_rest_order_actions_email_preferred_template_ids',
$default_preferred_ids,
$order,
array_map( fn( $t ) => $t->id, $available_templates )
);
if ( ! is_array( $preferred_template_ids ) ) {
$preferred_template_ids = $default_preferred_ids;
}
$preferred_template_ids = array_filter( array_unique( $preferred_template_ids ), 'is_string' );
foreach ( $preferred_template_ids as $candidate_id ) {
$template = $this->get_email_template_by_id( $candidate_id, $available_templates );
if ( $template ) {
return $template;
}
}
// Last resort: first available template.
$first = reset( $available_templates );
return $first ? $first : null;
}