Я впервые использую стручки в Wordpress, так что простите, если на этот вопрос легко ответить. Я немного искал ответ на эту проблему, но не нашел ничего, что конкретно отвечало бы на мой вопрос.
У меня есть два разных типа стручков.
- Области обучения: такие как физика, социология или вычислительная техника
- Тематические исследования: подробная информация о тематических исследованиях, проведенных в различных областях исследования
Каждый блок изучения конкретного случая имеет поле отношения, связывающее его с конкретным участком исследования. (В этом примере предположим, что конкретное тематическое исследование может быть связано только с одной областью исследования. Это может измениться в будущем, но на данный момент этого должно быть достаточно.)
Каждая область исследования имеет поле отношений, связывающее ее с определенной страницей 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, которые могут позволить мне получить более подробную информацию о полях отношений?
Любые советы будут с благодарностью.