2

这是我第一次在 Wordpress 中使用 Pods,如果这是一个容易回答的问题,请原谅我。我已经做了一些寻找这个问题的答案,但没有找到任何具体回答我的问题的东西。

我创建了两种不同的豆荚。

  1. 学习领域:如物理、社会学或计算机
  2. 案例研究:在各个研究领域进行的案例研究的详细信息

每个案例研究窗格都有一个关系字段,将其链接到研究窗格的特定区域。(在此示例中,假设特定案例研究只能与单个研究领域相关。这可能会在未来发生变化,但就目前而言,这应该足够了。)

每个研究领域都有一个关系字段,将其链接到特定的 WP 页面(例如,描述物理研究领域详细信息的详细页面)。

我想要做的是,在循环各种案例研究的同时,能够获得 WP Page 的链接,它与特定的关注领域相关。

我在技术上知道如何做到这一点,但我不确定这是最有效的方法。这就是我所做的,它似乎正在工作:

<?php 
$case_studies = new Pod('case_studies');
$case_studies->findRecords(null, 200);
$total_rows = $case_studies->getTotalRows();

if ($total_rows > 0) {
        while ($case_studies->fetchRecord()) {
                // RETRIEVE AREA OF FOCUS DETAILS
                $aof = $case_studies->get_field('area_of_focus');
                $aof = $aof[0];

                // GET AREA OF FOCUS POD
                $aofs = new Pod('areas_of_focus');
                $params = array('where' => "t.id like '".intval($aof['id'])."'");
                $aofs->findRecords($params);
                if ($aofs->fetchRecord()) {
                        $page = $aofs->get_field('focus_page');
                        $area_of_focus_url = get_permalink($page[0]['ID']);
                        echo '<a href="'.$area_of_focus_url.'">'. $aof['name'].'</a>';
                } else {
                        echo $aof['name'];
                }

                // CASE STUDY DETAILS GO HERE
        }
}

?>

这似乎至少是一个 O(n²) 算法,如果不是更多的话。我真的不知道 Pod 类的内部结构,所以它可能比这更昂贵。这也将执行几个 MySQL 查询而不是单个查询。

如果我在最初的案例研究查询中使用一些 MySQL 连接,这样我就不必让它运行一堆其他查询,会更好吗?或者 Pods 本身是否还有其他功能可以让我检索有关关系字段的更多详细信息?

任何提示将非常感谢。

4

1 回答 1

1

实际上,您可以通过遍历关系来深入了解 get_field。

试试这个尺寸:

$page_ID = $case_studies->get_field('area_of_focus.focus_page.ID');

Pod 将为您完成所有工作,您可以深入很多关卡,您甚至可以使用 findRecords 做同样的事情(从 Pods 1.12 开始)

于 2011-12-23T21:45:55.050 回答