Список страниц Wordpress, добавляющий контроль к элементам списка - PullRequest
0 голосов
/ 05 июля 2018

Таким образом, в основном у меня есть страница «Основной родитель» со страницами подкатегории, где каждая страница подкатегории имеет дочерние страницы, и с помощью кода она прекрасно работает, отображая каждого родителя со своими дочерними элементами.

Я хотел бы знать, что может иметь полный контроль над списком, потому что только для родительских вкладок я хотел бы добавить изображение с помощью ACF (предварительные настраиваемые поля), то есть, если эта родительская страница в CMS имеет логотип ( $tab_logo = get_field('parent_tab_logo');) добавить его в список с именем родителя.

Код:

<?php

// find parent of current page
if ($post->post_parent) {

    $ancestors = get_post_ancestors($post->ID);
    $parent = $ancestors[count($ancestors) - 1];

    //Display Parent post Title
    $parent_post_id = $parent;
    $parent_post = get_post($parent_post_id);
    $parent_post_title = $parent_post->post_title;

} else {
    $parent = $post->ID;
}

$children = wp_list_pages("sort_order=asc&title_li=&child_of=" . $parent . "&echo=0");

if ($children) { ?>
   <div id="side" class="col-lg-4 col-md-4 col-sm-12">

        <h4><?php echo $parent_post_title; ?></h4>
              <div class="row">
                <div class="col-lg-10 col-md-12 col-sm-12">
                  <ul id="side-navi" class="list-unstyled mb-0 ">

                      <?php echo $children; ?>

                  </ul>
                </div>
              </div>

    </div>

<?php } ?> 

Текущий результат: (пример)

  • Основная родительская страница

  • Parent-1 (child of Parent Main PAGE)

  • child1 (child of Parent-1)

  • child2 (child of Parent-1)

  • Parent-2 (child of Parent Main PAGE)

  • child1 (child of Parent-2)

  • child2 (child of Parent-2)

Ожидаемый результат: (пример)

  • Основная родительская страница

  • Parent-1 (ИЗОБРАЖЕНИЕ на этой странице, используя acf = $tab_logo = get_field('parent_tab_logo');)

  • child1

  • child2

  • Parent-2 (ИЗОБРАЖЕНИЕ на этой странице, используя acf = $tab_logo = get_field('parent_tab_logo');)

  • child1

  • child2

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы должны быть в состоянии сделать что-то похожее на приведенное ниже, где вы передаете идентификатор родительского поста в функцию get_field (). В зависимости от того, как вы настроили изображение в ACF, вам может потребоваться обновить способ извлечения изображения.

<?php

// find parent of current page
if ($post->post_parent) {

  $ancestors = get_post_ancestors($post->ID);
  $parent = $ancestors[count($ancestors) - 1];

  //Display Parent post Title
  $parent_post_id = $parent;
  $parent_post = get_post($parent_post_id);
  $parent_post_title = $parent_post->post_title;
  $parent_image = get_field('parent_tab_logo', $parent_post_id);

} else {
  $parent = $post->ID;
}

$children = wp_list_pages("sort_order=asc&title_li=&child_of=" . $parent . "&echo=0");

if ($children) { 
  ?>
  <div id="side" class="col-lg-4 col-md-4 col-sm-12">

    <h4><?php echo $parent_post_title; ?></h4>
    <?php
      if( !empty($parent_image) ){
      ?>
      <img src="<?php echo $parent_image['url']; ?>" alt="<?php echo $parent_image['alt']; ?>" />
      <?php
      } 
    ?>


    <div class="row">
      <div class="col-lg-10 col-md-12 col-sm-12">
        <ul id="side-navi" class="list-unstyled mb-0 ">
          <?php echo $children; ?>
        </ul>
      </div>
    </div>
  </div>
  <?php 
} 
?> 
0 голосов
/ 05 июля 2018

Это должно быть так же просто, как написано в документах ACF.

Вам нужно получить поле, когда вы проверяете родительский элемент, а затем отображаете поле в соответствующем разделе. Передача идентификатора записи также может избавить вас от головной боли, поэтому она предназначена только для ваших родительских элементов.

Надеюсь, это поможет.

<?php 

$parent_image = get_field('image', $post_id);

if( !empty($parent_image) ): ?>

<img src="<?php echo $parent_image['url']; ?>" alt="<?php echo $parent_image['alt']; ?>" />

<?php endif; ?>
...