首页 > 解决方案 > WordPress 按帖子类型过滤关系

问题描述

我有两个使用 Toolset 插件创建的自定义帖子类型:sponsorbook.

我在这两种帖子类型之间创建了一个关系(使用工具集):赞助商可能有 1 本书或更多本书(关系的 slug 是sponsor-book)。

重要提示:一本书不能有赞助商作为父母。

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

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

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

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

标签: wordpress

解决方案


尝试这个。首先我取了赞助商和书帖类型的对象。通过获取两种帖子类型的 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;

推荐阅读