按帖子类型划分的Wordpress筛选器关系

按帖子类型划分的Wordpress筛选器关系,wordpress,Wordpress,我用工具集插件创建了两种自定义帖子类型:赞助商和书籍 我已经在这两种帖子类型之间创建了一种关系(使用工具集):赞助商可以有一本或多本书(关系的slug是赞助商书) 重要提示:一本书不能有赞助商作为家长 我需要的是获得所有赞助商和所有没有赞助商的书籍。 我就是这么做的(包括有赞助商的书,我不想): 如何排除有赞助商的书籍?试试这个。首先,我以赞助商和书后类型为对象。通过获取这两种post类型的ID,我检查它们是否具有工具集父级,并将它们插入过滤数组中。然后打印过滤后数组的文章标题 $args =

我用工具集插件创建了两种自定义帖子类型:
赞助商
书籍

我已经在这两种帖子类型之间创建了一种关系(使用工具集):赞助商可以有一本或多本书(关系的slug是
赞助商书

重要提示:一本书不能有赞助商作为家长

我需要的是获得所有赞助商和所有没有赞助商的书籍。

我就是这么做的(包括有赞助商的书,我不想):


如何排除有赞助商的书籍?

试试这个。首先,我以赞助商和书后类型为对象。通过获取这两种post类型的ID,我检查它们是否具有工具集父级,并将它们插入过滤数组中。然后打印过滤后数组的文章标题

$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;

更改插件是否太晚了?我宁愿使用CPTUI而不是工具集,并使用acf建立关系。你可以很容易地在$args中操作这些。是的,当时已经太晚了。这是我的第一个解决方案:在get_帖子之后过滤结果。这样我在查询中得到所有帖子,这是不好的。我正在寻找一些可以通过的东西来获得$args中的_帖子。
$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;