Список страниц Wordpress, добавляющий контроль к элементам списка

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

Я хотел бы знать, что могу иметь полный контроль над списком, потому что только для родительских вкладок я хотел бы добавить изображение с помощью 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 (дочерний элемент Main Parent PAGE)

  • child1 (потомок Parent-1)

  • child2 (потомок Parent-1)

  • Parent-2 (дочерний элемент Main Parent PAGE)

  • child1 (потомок Parent-2)

  • child2 (потомок Parent-2)

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

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

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

  • ребенок1

  • ребенок2

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

  • ребенок1

  • ребенок2

В чем же тогда проблема? Вы полностью контролируете список и логотип

yomisimie 05.07.2018 12:58

Используя ACF, я не хочу добавлять изображения с использованием фонового изображения, я хочу, чтобы пользователь добавлял изображение через CMS с помощью ACF, но, используя <?php echo $children; ?>, я не могу сказать пример <li>$parent <img class = "img-fluid" src = "<?php if ($tab_logo ){ echo tab_logo; ?>"> </li>, чего я пытаюсь достичь. Есть смысл?

Ylama 05.07.2018 13:02

вы можете предоставить get_field() идентификатор, который у вас есть для родителя - $tab_logo = get_field('parent_tab_logo', $parent_post_id);

Stender 05.07.2018 13:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
33
2

Ответы 2

Это должно быть так просто, как говорится в документации 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; ?>

Дело в том, что я пытаюсь настроить таргетинг на родителей в <?php echo $children; ?>, которые состоят из подчиненных и дочерних страниц подчиненных родителей. Также обновите мой вопрос, чтобы вы увидели, что <?php echo $children; ?> является дочерними страницами <?php echo $parent_post_title; ?>, надеюсь, вы можете помочь, спасибо.

Ylama 05.07.2018 14:17

Вы должны иметь возможность сделать что-то вроде приведенного ниже, где вы передаете идентификатор публикации родителей в функцию 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 
} 
?> 

Привет, человек, мне нужно изменить свой вопрос после просмотра вашего ответа, я понял, что что-то пропустил, а именно: все, что у <?php echo $children; ?> есть пример страницы с основной категорией Stay, а затем страницы подкатегорий, где на страницах подкатегорий есть дети, я пытаюсь воспроизвести изображение из страницы подкатегорий. плохо объясню, лучше в вопросе, плохо быстро поправлю, но спасибо за помощь.

Ylama 05.07.2018 13:22

Мне очень жаль, но я изо всех сил пытаюсь понять ваш вопрос: / Следует отметить, что вы можете столкнуться с неопределенным индексом, где вы выводите $ parent_post_title, если родитель не найден. Стоит ли добавить вокруг этого условную проверку?

heady12 05.07.2018 13:32

Круто, я добавлю условную проверку. Также обновите мой вопрос, посмотрите на текущий результат и ожидаемый результат, чтобы увидеть, откуда взялось изображение. Надеюсь, это поможет вам понять; /

Ylama 05.07.2018 14:07

Другие вопросы по теме