Можно ли использовать PHP «include» для дублирования раздела PHP + ACF в WP? - PullRequest
0 голосов
/ 19 февраля 2019

Я создаю собственную тему WP - на сайте есть раздел для сотрудников.Используя ретранслятор «Advanced Custom Fields», я позволил пользователям WP перейти на страницу и добавить / изменить / удалить сотрудников.

Я хочу, чтобы этот раздел о сотрудниках был добавлен в другие места на веб-сайте, но его нужно обновлять только в одном месте, а не заходить на несколько страниц, чтобы внести те же изменения.

Я относительно новичок в WP dev и PHP, но вот что я попробовал:

Я создал новый php-файл только с разделом для сотрудников:

<?php /*  Template Name: StaffSection  */  ?>
<h1>Testing</h1><!-- This line runs fine -->
<?php<!-- None of this runs -->
// check if the repeater field has rows of data
if( have_rows('employees') ):
    // loop through the rows of data
while ( have_rows('employees') ) : the_row(); ?>
    <div class="col-lg-3 col-md-6 gap">
        <a href="<?php the_sub_field('employee-link'); ?>">
            <img class="leadership-img" src="<?php the_sub_field('employee-image'); ?>">
            <h4 class="position"><?php the_sub_field('employee-name'); ?></h4>
        </a>
        <p class="position"><?php the_sub_field('employee-title'); ?></p>
    </div>
<?php endwhile;
else :
// no rows found
endif; ?>

На странице, которую я хочу «включить» в этот раздел:

<section id="leadership" class="section">
    <div class="container-fluid">
        <div class="wrapper">
            <div class="row leadership-section">
                <?php include 'staff-section.php'; ?>
            </div>
        </div>
    </div>
</section>

В WP я создал новую страницу WP и связал ее с созданным мной шаблоном StaffSection.У меня есть «Дополнительные настраиваемые поля» на этой странице, чтобы вытащить контент, который определяют пользователи WP.

Я знаю, что функция 'include' работает с этим тестовым тегом h1, но есть идеи, почему он не читает цикл ретранслятора php ниже этого?

1 Ответ

0 голосов
/ 20 февраля 2019

Возможно, что if ( have_rows('employees') ) ... и т. Д. Возвращает false, потому что нет ретранслятора «сотрудников», который принадлежит объекту post, определенному в цикле.

Одним из решений, которое я использую для создания поля, отображаемого на многих страницах, является создание вторичного запроса для извлечения ретранслятора.

Например, мы можем сделать это.1. Создайте сообщение с категорией «сотрудники». 2. Перейдите в ACF и установите логику таким образом, чтобы повторитель отображался только в сообщениях с категорией «сотрудники». 3. Запросите объект публикации с категорией «сотрудники». 4. Доступ к повторителю из запроса.

<?php
$repeater_query = new WP_Query(array('category_name' => 'employees'))
if ($repeater_query->have_posts() ) {
   while ($repeater_query->have_posts() ) {
       $repeater_query->the_post();
       // check if the repeater field has rows of data
if( have_rows('employees') ):
    // loop through the rows of data
while ( have_rows('employees') ) : the_row(); ?>
    <div class="col-lg-3 col-md-6 gap">
        <a href="<?php the_sub_field('employee-link'); ?>">
            <img class="leadership-img" src="<?php the_sub_field('employee-image'); ?>">
            <h4 class="position"><?php the_sub_field('employee-name'); ?></h4>
        </a>
        <p class="position"><?php the_sub_field('employee-title'); ?></p>
    </div>
<?php endwhile;
else :
// no rows found
endif; 
   }
} wp_reset_postdata(); 

Надеюсь, это поможет.Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...