急需帮助。如果有必要,请告诉我正确的论坛,但我非常需要解决这个问题。
我正在创建一个物业管理网站,其中的基本功能必须如下所示:
用户登录并查看其管理的建筑物/物业用户单击一栋建筑并查看服务/维修项目的类别(电气、下水道、互联网等)用户选择一个类别,并在该类别中查看特定建筑的唯一服务项目(电缆箱所在位置、断路器箱所在位置等)我的问题是,我目前正在获取所有建筑物的服务项目,而不仅仅是正在管理的建筑物。当前的流程从名为Buildings的页面(显示所有可用的建筑帖子)(我使用文件模板Buildings.php进行了自定义)到自定义帖子类型“Buildings”的单个页面,该页面显示类别列表(由single Buildings.php处理)到类别。php页面将所选类别中的所有服务项显示到单个。显示单个项目的php页面。
我的大崩溃似乎在分类上。php。我试图只显示类别中与先前选择的建筑柱相关的项目。我正在尝试使用posts-to-posts plugin 为了实现这一点。这是目前为止的代码。
<?php
// Get category id of current page
$catid = get_queried_object_id();
// Find connected posts
$wp_query = new WP_Query( array(
\'post_type\' => \'buildings\'
) );
p2p_type( \'buildings_to_si\' )->each_connected( $wp_query, array( \'cat\' => $catid ), \'service_items\' );
// Display connected posts
while ( $wp_query->have_posts() ) : $wp_query->the_post();
foreach ( $post->service_items as $post ) : setup_postdata( $post );
?>
<div class="col-lg-3 col-md-4 col-sm-6 p-3 text-center">
<a class="btn btn-elegant" href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</div>
<?php endforeach; ?>
<?php endwhile; ?>
到目前为止,无论插件设置的关系如何,我都会获得所有建筑物的所有类别中的所有帖子。我知道这与我试图在分类档案页面上这样做有关,但我真的不知道现在还能做什么。如果必要的话,我愿意走一条完全不同的路。如果需要,将更新以进行澄清。谢谢
Edit: For Posterity
因此,我根据kuchenundkakao的评论进行了修改。我将此代码添加到单个建筑中。将帖子id添加到类别链接地址的php文件(更新的代码以粗体显示)
<?php
$args = array(
\'hide_empty\' => true,
\'orderby\' => \'name\',
\'order\' => \'ASC\',
\'parent\' => 0,
\'posts_per_page\' => -1
);
$categories = get_categories($args);
foreach($categories as $category) {
// Get the ID of a given category
$category_id = get_cat_ID( $category->name );
// Get the URL of this category
$category_link = get_category_link( $category_id );
/////////// Added bit of code /////////////////
$category_link .= "?building_id=".get_the_ID();
echo \'<div class="col-lg-3 col-md-4 col-sm-6 p-3 text-center"><a class="btn btn-lg btn-elegant" href="\' . $category_link.\'" role="button">\' .
$category->name.\'</a></div>\';
?>
然后在类别上。php我添加了几个变量来检索该id。下面是基于此更新的代码。
<?php
// Get category id of current page
$catid = get_queried_object_id();
////////// Added code ////////////////
$buildingid = $_GET[\'building_id\'];
// Find connected posts
$wp_query = new WP_Query( array(
\'post_type\' => \'buildings\',
////////// Added code ////////////////
\'p\' => $buildingid
) );
p2p_type( \'buildings_to_si\' )->each_connected( $wp_query, array( \'cat\' => $catid ), \'service_items\' );
// Display connected posts
while ( $wp_query->have_posts() ) : $wp_query->the_post();
foreach ( $post->service_items as $post ) : setup_postdata( $post );
?>
<div class="col-lg-3 col-md-4 col-sm-6 p-3 text-center">
<a class="btn btn-elegant" href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</div>
<?php endforeach; ?>
<?php endwhile; ?>
这已经解决了这个问题,并允许我继续按预期使用类别页面。它确实给我的URL添加了一些混乱,但这是一个公司的私人网站,所以这不会是一个问题。