Как добавить фильтр в meta_query, например, найти только рома - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть ситуационная проблема с meta_query. Поиск клиента IV, но результат включен в частный (оригинальное слово является частным). Я хочу показать только IV (рома числовой) включенный пост. Мой поиск в meta_query из заголовка, подзаголовка и описания в пользовательском плагине. Я нашел REGEXP, но не смог найти правильный способ найти числовое значение Roam из заголовка, подзаголовка и описания.

Клиент может найти только рома, а также любые слова и т. Д.


    $args = array(
        'numberposts' => -1,
        'category' => 0,
        'orderby' => 'post_date',
        'order' => 'DESC',
        'meta_query' => array(
            'relation' => 'OR',
            array(
                'key' => 'title',
                'value' => $search_term,
                'compare' => 'LIKE',
            ),
            array(
                'key' => 'sub-title',
                'value' => $search_term,
                'compare' => 'LIKE',
            ),
            array(
                'key' => 'description',
                'value' => $search_term,
                'compare' => 'LIKE',
            )
        ),
        'post_type' => 'gallery',
        'post_status' => 'publish',
        'suppress_filters' => true
    );

    $posts = get_posts($args, ARRAY_A); 

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Я решил свою проблему с помощью регулярных выражений в заголовок, описание и подзаголовок.Это не очень хорошая идея, все еще ищущая лучший ответ.

$tempFlag = false;      
foreach (explode(" ", $description) as $temp) {
            if (preg_match('/^(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$/', $temp)) {

                if (in_array($temp, $romeNumber)) {
                    $tempFlag = true;
                }
            }
        }
0 голосов
/ 09 апреля 2019

Регулярное выражение должно включать римские числа следующим образом (при условии, что $search_term включает только запрошенное римское число:

$regEx = '/(' . strtoupper($search_term) . ')/g';
...