我正在为一家旅游公司建立一个网站,我需要在公司提供的旅行和打包旅游之间建立亲子关系,以便访问该地点。 旅行是父母,打包旅行是孩子,这是 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页面上。
答案 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'
)
));