WordPress - 如何在两个自定义帖子类型

时间:2017-01-13 11:23:08

标签: wordpress parent-child custom-post-type advanced-custom-fields

我正在为一家旅游公司建立一个网站,我需要在公司提供的旅行和打包旅游之间建立亲子关系,以便访问该地点。 旅行是父母,打包旅行是孩子,这是 1-many relationship

为实现这一目标,我创建了两个自定义帖子类型(Trip和Package-Tour)。在Trip中,我添加了Package-Tour作为关系字段。

然后我添加了两个Package Tours( PT-A PT-B )和两个旅程( Trip-A 跳闸-B )。我将PT-A与Trip-A和PT-B与Trip-B相关联。

问题是两个旅行页面都可以看到PT-A和PT-B,而我只期待相关的一个出现。

在我的single.php我写了这段代码:

<?php
    $packages = get_posts(array(
        'post_type' => 'package_tour',
        'meta_query' => array(
            'key' => 'available_tour_packages',
            'value' => '"' . get_the_ID() . '"',
            'compare' => 'LIKE'
        )
    ));

    if($packages) {
      foreach($packages as $package) {
         echo "<h1>" . $package->post_title . "</h1>";
         echo "<p>" . $package->trip_itinerary . "</p>";
         echo "<p>" . $package->booking_procedure . "</p>";
      }
    }
?>

echo - ing get_the_ID给了我正确的ID旅行帖,但在数据库中,我看到post_parent Package-Tour帖子下保存的值都是0(不是旅行社的身份证明,这意味着当前的关系不是真正的亲子关系 - 我的想法。

我最近刚开始使用WordPress,但还没有太多经验。这样做的正确方法是什么?

更新:

这是Trips和Package之旅相互关联的方式。一次旅行一趟旅游。但是当Trip-A显示Package-A而Trip-B应该显示Package-B时,两个包(A和B)都出现在Trip-A和Trip-B页面上。

enter image description here

1 个答案:

答案 0 :(得分:0)

您应该删除meta_query中的引号,因为存储的值是整数。尝试:

$packages = get_posts(array(
    'post_type' => 'package_tour',
    'meta_query' => array(
        'key' => 'available_tour_packages',
        'value' => get_the_ID(),
        'compare' => 'IN'
    )
));