WordPress $ args выберите запрос из нескольких пользовательских записей с пользовательской проверкой категории

#php #mysql #wordpress

#php #mysql #wordpress

Вопрос:

Привет всем, я хочу создать запрос $ args, чтобы проверить, имеет ли пользовательское сообщение категорию, затем проверьте, равно ли значение категории none или нет, если нет, то проверьте, является ли значение пользовательского поля true или false. и для другого типа сообщения эта категория недоступна.

вот мой код

 $args = array(
    'posts_per_page' => 10,
    'paged' => $page_no,
    'post_type' => array('ct_photo', 'ct_event', 'ct_video', 'ct_thought'),
    //'post_type' => 'ct_video',
    'orderby' => 'post_date',
    'order' => 'DESC',
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => 'vid_category',
            'compare' => 'IN',
            'value' => array(10, 11, 12),
        ),
        array(
            'relation' => 'AND',
            array(
                'key' => 'vid_category',
                'compare' => 'IN',
                'value' => array(10, 11),
            ),
            array(
                'key' => 'display_home',
                'compare' => '=',
                'value' => 'true',
            )
        ),
    )
);
  

Теперь то, что я хочу
Я хочу, чтобы этот запрос вернул результат, который проверяет, что если тип записи — видео, то он проверяет, доступно ли значение категории, затем проверяет, является ли пользовательское поле «display_home» истинным или нет, и если категория не выбрана, то она должна быть показана в запросе.
и для другого типа сообщения он не будет проверять категорию.

я пытался использовать case amp; if, но это не работает.

Пожалуйста, помогите мне.

Ответ №1:

О, я нашел свой ответ

 SELECT wp.id, wp.post_type, wpm.meta_key, wpm.meta_value FROM `wp_posts` as wp Inner Join wp_postmeta as wpm ON wp.id = wpm.post_id where (wpm.meta_key = 'vid_category' AND wpm.meta_value ="true") OR (wpm.meta_key = 'display_home' and wpm.meta_value ="true") OR(wp.post_type IN ('ct_photo', 'ct_event', 'ct_thought')) and wp.post_status = 'publish' GROUP BY wp.id ORDER BY `id` ASC