使用WordPress Pods CMS管理多级关系的最有效方法是什么?

时间:2011-01-24 00:26:39

标签: php algorithm wordpress relationship podscms

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

我创建了两种不同的pod。

  1. 学习领域:如物理,社会学或计算机
  2. 案例研究:在各个研究领域进行案例研究的详情
  3. 每个Case Study Pod都有一个关系字段,将其链接到Study Pod的特定区域。 (在这个例子中,假设一个特定的案例研究只能与单个研究领域相关。这可能会在未来发生变化,但就目前而言,这应该足够了。)

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

    我想做的是,在循环遍历各种案例研究时,能够获得WP页面的链接,它的特定焦点区域与之相关。

    我在技术上知道怎么做,但我不确定这是最有效的方法。 这就是我所做的,它似乎正在起作用:

    <?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中是否有其他功能,可以让我检索关系字段的更多细节?

    任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:1)

你可以通过遍历关系来实现对get_field的深入了解。

尝试这个尺寸:

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

Pods将为您完成所有工作,您可以深入了解各种级别,甚至可以使用findRecords(从Pods 1.12开始)