PHP: match для маппинга статуса заказа и режима WP_Query
Использование match (PHP 8.0) для маппинга кодов статуса заказа в стадии сделки и для параметров сортировки запросов WordPress.
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
Выражение match (PHP 8.0) для маппинга статусов и режимов без длинных switch. Документация: match, WP_Query orderby.
<?php
// Bitrix: маппинг статуса заказа → стадия сделки CRM
function mapOrderStatusToDealStage(string $statusId): string
{
return match ($statusId) {
'N' => 'NEW',
'P' => 'PREPARATION',
'F' => 'WON',
'C' => 'LOSE',
default => 'NEW',
};
}
// WordPress: маппинг режима запроса в параметры WP_Query
function getQueryArgsByMode(string $mode): array
{
return match ($mode) {
'latest' => ['orderby' => 'date', 'order' => 'DESC'],
'popular' => ['orderby' => 'comment_count', 'order' => 'DESC'],
'title' => ['orderby' => 'title', 'order' => 'ASC'],
default => ['orderby' => 'date', 'order' => 'DESC'],
};
}
Usage:
// В обработчике OnSaleOrderSaved или при синхронизации с CRM
$stage = mapOrderStatusToDealStage($order->getField('STATUS_ID'));
// В обёртке над WP_Query
$args = getQueryArgsByMode('popular');
$q = new WP_Query(array_merge(['post_type' => 'post', 'posts_per_page' => 10], $args));
Notes:
⚠️ match — строгое сравнение (как ===). Блок default обязателен, если не перечислены все возможные значения. Коды статусов заказа Bitrix (N, P, F, C) и параметры orderby/order — из официальной документации Bitrix и WordPress.