it-roy-ru.com

Пользовательский тип сообщения и пользовательское поле WP_Query

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

У меня также есть раздел новостей, использующий стандартную часть сообщений WP. Я написал шорткод, который будет отображать новости на главной странице. Что я хочу сделать, так это включить систему, в которой один из отчетов о матчах можно добавить на домашнюю страницу, выбрав опцию с помощью плагина Advanced Custom Fields - это форма переключателя с двумя опциями, с true/false значения - Показать на домашней странице? Да нет.

В своем шорткоде "Новости" я добавил пользовательский тип публикации отчетов о матчах, который отлично работает, но я не уверен, как отображать отчеты только с выбранной переключателем "Показать на домашней странице - Да". Вот мои параметры запроса:

$queryArgs = array(
    "post_type" => array( "post", "match-report" ),
    "meta_key" => "show_in_news",
    "meta_value" => "true"
);

Проблема заключается в том, что из-за того, что в стандартных сообщениях нет настраиваемого поля, отображаются только отчеты о совпадениях, и если я удалю запросы настраиваемых полей, будут отображаться все отчеты о совпадениях вместе с сообщениями. Мне нужно, чтобы он отображал только отчеты о матчах с show_in_news (мое настраиваемое поле с переключателями, созданное с помощью расширенных настраиваемых полей со значением true, вместе со всеми сообщениями).

Может кто-нибудь мне помочь? Большое спасибо, если так :)

1
Tom Oakley

В настоящее время ваш мета-запрос является эксклюзивным, и вы должны сделать его инклюзивным. Например, вы можете сохранить всегда мета-поле show_in_news для пользовательского типа сообщения отчета о совпадении, даже когда значение false. Затем вы можете включить сообщения, если пользовательский show_in_news не существует (стандартные сообщения) или если он существует, и это "true" для пользовательского типа сообщения:

$queryArgs = array(
    "post_type" => array( "post", "match-report" ),
    "meta_query" => array( 
        "relation" => "OR",
        array(
            "key" => "show_in_news",
            "compare" => "NOT EXISTS",
        ),
        array(
            "key"   => "show_in_news",
            "value" => "true",
        ),
    ),
);

Это должно сделать работу.

1
cybmeta