Параллакс тема wordpress. Как я могу динамически получать идентификаторы страниц для отображения собственных подменю?

Я создаю тему WordPress с функциями параллакса и html5, на главной странице есть все основные страницы и два разных вида навигации.

Основная — это навигация по родительским страницам. Итак, у меня есть «О программе», «Проекты» и «Контакты».

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

Также проекты, имеет разные страницы: "Проекты" (основная), "Дизайн" (дочерняя), Консалтинг (дочерняя) и т.д.

Во втором меню, расположенном справа на странице в виде закругленных кнопок, перечислены родительский элемент «о» и дочерний элемент «около 2».

Я уже понял, как перечислить их и заставить ссылки вести себя при прокрутке (поведение параллакса)

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

Вот код, который у меня есть, может ли кто-нибудь помочь мне найти способ, чтобы код определял идентификатор каждой текущей страницы, чтобы перечислить основные и дочерние страницы?

Как видите, $parent = 13; жестко запрограммировано, а также включает $pages = get_pages('hierarchical=0&include=13') ; с жестко запрограммированным идентификатором. Таким образом, все страницы отображаются одинаково. Я знаю, что могу создать условие с is_page для каждого жесткого кодирования, но идея состоит в том, чтобы сделать его динамическим.

Любая помощь будет здорово!

Спасибо,

<?php 

$parent = 13;
$args= array(
    'parent' => $parent,
    'hierarchical' => 0
);

            $pages = get_pages('hierarchical=0&include=13') ;

            foreach ( $pages as $page ) {
                $new_title = str_replace( " ", "", strtolower( $page->post_name ) );    
                echo '<li><a href="#' . $new_title . '" title="' . $page->post_title . '">' . $page->post_title . '</a></li>';
            }

    $child_page_pages = get_pages($args);
    foreach ( $child_page_pages as $page ) {

                $new_title = str_replace( " ", "", strtolower( $page->post_name ) );    
                echo '<li><a href="#' . $new_title . '" title="' . $page->post_title . '">' . $page->post_title . '</a></li>';
            }

?>

person Ari K.    schedule 17.09.2011    source источник


Ответы (1)


Чтобы получить идентификатор родительской страницы публикации, вы можете использовать get_post_ancestors( $post ), он должен возвращать родительский идентификатор.

$ReturnParents = get_post_ancestors($post->ID);

Другой метод, который вы можете попробовать, — это глобальный $post.

global $post;
global $wp_query; 

    $thePostID = $wp_query->post->ID; 
    $myParent = $post->post_parent; 

    echo "I am post ". $thePostID . " and my parent is " . $myParent;  
person Wyck    schedule 17.09.2011
comment
С глобальным $post каждая страница возвращает одно и то же: у меня сообщение 1, а у моего родителя 0, поэтому у меня есть каждая страница в теме параллакса, говорящая, что это сообщение номер 1. И ни одна из страниц не имеет идентификатора #1. Что я делаю неправильно? - person Ari K.; 17.09.2011