Доступ пост-> идентификатор за пределами цикла для списка дочерних страниц

Я желаю перечислить дочерние страницы своей текущей страницы на боковой панели темы. Однако моя боковая панель (левая сторона) перед циклом в шаблоне и пост-> идентификатор ничего не возвратит, если это будет перед циклом.

Мой текущий код:

<?php

wp_list_pages('title_li=&child_of='.$post->ID); 

?>

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

Любая справка ценилась бы.

1
24.05.2013, 15:46
4 ответа

... пост-> идентификатор ничего не возвратит, если это будет перед циклом

Вообще говоря, это - ложь. $post переменная установлена задолго до того, как Цикл запускается в Вашей теме для большинства страниц. Основной запрос "начала", что переменная к первому сообщению в Цикле. Тем не менее в зависимости от этой переменной вне Цикла не самый надежный подход. Более надежный, должен был бы использовать get_queried_object.

$qobj = get_queried_object();
wp_list_pages('title_li=&child_of='.$qobj->ID);

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

if (is_page()) {
    $qobj = get_queried_object();
    wp_list_pages('title_li=&child_of='.$qobj->ID);
}

Или проверьте сам объект.

$qobj = get_queried_object();
if (isset($qobj->post_type) && 'page' == $qobj->post_type) {
  wp_list_pages('title_li=&child_of='.$qobj->ID);
}

Это - просто примеры. Я не знаю, каковы Ваши точные условия.

1
19.02.2020, 22:54

Попробуйте это:

// get the post id
$post_id = get_queried_object_id();

// get the children
$children = get_pages('child_of' => $post_id);

//output them
if( count( $children ) != 0 ) {
    echo "<ul>";
    foreach ($children as $child) {
        // if we only want children, not grandchildren
        if ($child->post_parent == $post_id) {
            echo "<li><a href=\"" . get_permalink($child->ID) . "\">";
            echo $child->post_title;
            echo "</a></li>";
        }
    }
    echo "</ul>";
}
1
19.02.2020, 22:54
  • 1
    Отредактированный для использования get_queried_object_id () –  crdunst 24.05.2013, 16:16
  • 2
    Отредактированный снова для изменения ссылки на переменную $post_id в, если оператор –  crdunst 24.05.2013, 16:23

Существует действительно недостаточно информации для предоставления точного ответа здесь, но если подозрение корректно, попытайтесь заменить $post->ID с get_the_ID().

0
19.02.2020, 22:54
  • 1
    спасибо за ответ. Я рад дать еще информацию, я довольно плохо знаком с этим видом материала вот почему, мой вопрос может быть немного конкретным? - Я только что попытался заменить $post-> идентификатор с get_the_ID () и не имел никакой удачи –  rowefx 24.05.2013, 16:06
  • 2
    Как насчет get_queried_object_id() ? –  Matthew Boynes 24.05.2013, 16:08
  • 3
    <? php wp_list_pages ('title_li =&child_of = '.get_queried_object_id ());?> - это возвращает все страницы, как будто не было никакого применяемого фильтра –  rowefx 24.05.2013, 16:12
  • 4
    Кажется, что Вы не находитесь на странице. Вы находитесь на самом деле на единственном просмотре страницы? (представленный с page.php или переопределенным шаблоном страницы?) спасибо –  Matthew Boynes 24.05.2013, 16:15
  • 5
    Да, я нахожусь на своей home.php странице, хотя я действительно хочу, чтобы это появилось на каждой странице в конечном счете. –  rowefx 24.05.2013, 16:18

попытайтесь сделать код как

global $post;
var_dump($post);//test values in $post
wp_list_pages('title_li=&child_of='.$post->ID);
0
19.02.2020, 22:54

Теги

Похожие вопросы