PHP
#php#match#bitrix#wordpress#wp-query#php-8

PHP: match для маппинга статуса заказа и режима WP_Query

Использование match (PHP 8.0) для маппинга кодов статуса заказа в стадии сделки и для параметров сортировки запросов WordPress.

Как использовать

  1. Скопируйте нужный фрагмент кода.
  2. Вставьте в свой проект и при необходимости измените под задачу.
  3. Проверьте зависимости и окружение (версии, переменные).

Выражение 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.