Я пытаюсь отобразить список на основе страницы.Список строится на основе данных в настраиваемом поле ACF, которое находится в сериализованном массиве.
Список предназначен для сотрудников отдела.Я устанавливаю родительскую страницу в Wordpress, но хочу, чтобы сотрудники были перечислены на всех дочерних страницах.Сотрудники также могут быть перечислены в нескольких отделах, поэтому поле ACF хранится в виде сериализованного массива.
Мне удалось заставить это работать, если текущая страница находится в массиве, но у меня возникли проблемыкогда данные для родительской, дедушки и т. д. страницы.Как я могу пройти через это, чтобы найти первую родительскую страницу, которая соответствует критериям?
Соответствующий код (отображается дополнительный контент, некоторые включены, если он полезен в вашем ответе):
$postid = get_the_ID();
$staffList = get_posts(array(
'post_type' => 'staff',
'meta_key' => 'position_order',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'ministries', // name of custom field
'value' => $postid,
'compare' => 'LIKE',
),
array(
'key' => 'administration', // name of custom field
'value' => $postid,
'compare' => 'LIKE',
)
)
));
if(( $staffList ) != '') {
foreach ( $staffList as $staff ) : setup_postdata( $people );
$pid = $staff->ID;
$featured_img_url = get_the_post_thumbnail_url($pid, 'full');
$highres = get_field('high_res', $pid);
$normal = get_field('normal', $pid);
$biofile = get_field('bio_file', $pid);
$scontent = $staff->post_content;
$contact = apply_filters('the_content',$scontent);
?>
<div class="profile">
<div class="text-center">
<img src="<?php echo $featured_img_url; ?>" width="130"
alt="<?php echo $staff->post_title; ?>">
</div>
<div class="profile__name"><?php echo $staff->post_title; ?></div>
<?php echo $contact; ?>
<?php if ( $biofile != "" ) { ?>
<a href="<?php echo $biofile; ?>" class="btn" target="_blank"><span class="icon-file"></span> <?php echo $people->post_title; ?> Bio</a>
<?php } ?>
</div>
<?php
endforeach;
wp_reset_postdata();
?>
<?php } endif; ?>
Я думаю, что запрос должен быть помещен в функцию, но возникла проблема с тем, чтобы он работал правильно, а затем перебирает родительские записи, пока не найдет результат.Концепция такова:
, если для текущего $ pageid нет сотрудников, тогда получите $ parent_pageid и выполните запрос.если сотрудники не найдены, найдите grandparent_pageid и выполните запрос и т. д., пока не будут найдены сотрудники или не осталось родительских страниц.
Я обнаружил следующее: Рекурсивная функция для получения описания родительского кэгори. это хороший способ итерации, просто проблема с модификацией для моих нужд.
Спасибо за вашу помощь!