Взаимосвязь фильтров Wordpress по типам постов - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть два пользовательских типа постов, которые я создал с помощью плагина Toolset: sponsor и book.

Я создал связь (с набором инструментов) между этими двумя типами сообщений: у спонсора может быть 1 или более книг (для отношения - sponsor-book).

ВАЖНО: книга не может иметь спонсора в качестве родителя.

Мне нужно получить всех спонсоров и все книги без спонсора.

Это то, что я делаю (книги со спонсором включены, я не хочу):

$args = array(
    'post_type' => array('sponsor', 'book')
);
$posts = get_posts( $args );

Как я могу исключить книги, у которых есть спонсор?

1 Ответ

1 голос
/ 30 апреля 2019

Попробуй это.Сначала я взял объект спонсора и тип книги.Получая идентификаторы обоих типов записей, я проверяю их, если есть родительский набор инструментов, вставить их в фильтруемый массив.Затем напечатайте заголовок сообщения из этого отфильтрованного массива.

$args = array(
  'post_type' => array('sponsor', 'book')
);
$both_posts = get_posts( $args );

$arr = array();
$num= 0;
if( $both_posts ): 

  foreach( $both_posts as $k => $both_post ): 

    $posts_without_sponsor_id = toolset_get_related_post( 
        $both_post->ID,
        'sponsor-book', //slug of relationship
        'parent'
    );

    if( !$posts_without_sponsor_id ):
        $arr['filteredposts'][$num] = $event->ID;
        $num++;
    endif;

   endforeach;

 endif;

// Filtered IDs
if($arr['filteredposts']): 
foreach( $arr['filteredposts'] as $filtered ):
    echo $filtered->post_title;
endforeach;
endif;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...