[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сайдбар в Wordpress
ZloY SloN
Доброго времени суток, уважаемые php-разработчики! Новичку требуется срочная помощь!
Есть сайт на Wordpress, в теме реализован сайдбар на PHP.


Код сайдбара в functions.php:

function pvmenu_func(){
$out = '';
if (is_page()) {
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-cust.php'
));
foreach($pages as $page){
$pages2[get_field('srpg_sort', $page->ID)] = array('id' => $page->ID);
};
ksort($pages2);

$out .= '<section id="nav_menu-2" class="widget widget_nav_menu amr_widget"><div class="menu-department-container"><ul id="menu-department" class="menu">';
foreach($pages2 as $page){
$pv_page_id = $page['id'];
$out .= '<li class="menu-item menu-item-type-post_type menu-item-object-page';
if ($pv_page_id == get_the_ID()) {$out .= ' current_page_item';};
$out .= '"><a href="'.get_permalink($page['id']).'">'.get_the_title($page['id']).'</a></li>';
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'post',
'meta_key' => 'srpg',
'meta_value' => $pv_page_id
));
if ($pv_page_id == get_the_ID()) {
$out .= '<ul class="sub_menu">';
foreach($posts as $post){
$out .= '<li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a></li>';
}
$out .= '</ul>';
}
}

$out .= '</ul></div></section>';
} else {
if (get_field('srpg') != '') {
$srpg = get_field('srpg');
}
if (get_field('srtw') != '') {

$srtw = get_field('srtw');
$srpg = get_field('srpg', $srtw);
}
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-cust.php'
));
$out .= '<section id="nav_menu-2" class="widget widget_nav_menu amr_widget"><div class="menu-department-container"><ul id="menu-department" class="menu">';
foreach($pages as $page){
$pages2[get_field('srpg_sort', $page->ID)] = array('id' => $page->ID);
};
ksort($pages2);
foreach($pages2 as $page){
$pv_page_id = $page['id'];
$out .= '<li class="menu-item menu-item-type-post_type menu-item-object-page';
if ($pv_page_id == $srpg) {$out .= ' current_page_item';};
$out .= '"><a href="'.get_permalink($page['id']).'">'.get_the_title($page['id']).'</a></li>';
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'post',
'meta_key' => 'srpg',
'meta_value' => $pv_page_id
));
if ($pv_page_id == $srpg) {
$out .= '<ul class="sub_menu">';
foreach($posts as $post){
$pv_post_id = $post->ID;
$out .= '<li class="menu-item menu-item-type-post_type menu-item-object-page ';
if ($pv_post_id == get_the_ID()) {$out .= ' current_page_item';};
if ($pv_post_id == $srtw) {$out .= ' current_page_item';};
$out .= '"><a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a></li>';
$child_posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'post',
'meta_key' => 'srtw',
'meta_value' => $pv_post_id
));
if ($pv_post_id == get_the_ID() || $pv_post_id == $srtw) {
$out .= '<ul class="sub_menu">';
foreach($child_posts as $child_post){
$out .= '<li class="menu-item menu-item-type-post_type menu-item-object-page ';
if ($child_post->ID == get_the_ID()) {$out .= ' current_page_item';};
$out .= '"><a href="'.get_permalink($child_post->ID).'">'.get_the_title($child_post->ID).'</a></li>';
};
$out .= '</ul>';
};
}
$out .= '</ul>';
}
}

$out .= '</ul></div></section>';
};

return do_shortcode($out);
}
add_shortcode( 'pvmenu', 'pvmenu_func' );




Еще кусок кода в page-cust.php:

<?php
if (is_page()) {
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-cust.php'
));
foreach($pages as $page){
echo '<!--'.get_the_title($page->ID).get_permalink($page->ID).' -->';

$pv_page_id = $page->ID;
if ($pv_page_id == get_the_ID()) {echo '<!-- active -->';};
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'post',
'meta_key' => 'srpg',
'meta_value' => $pv_page_id
));
if ($pv_page_id == get_the_ID()) {
foreach($posts as $post){
echo '<!-- >>>'.get_the_title($post->ID).get_permalink($post->ID).' -->';
}
}
}
}
else {
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-cust.php'
));
foreach($pages as $page){
echo '<!--'.$page->ID.' -->';
$pv_page_id = $page->ID;
if ($pv_page_id == get_the_ID()) {echo '<!-- active -->';};
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'post',
'meta_key' => 'srpg',
'meta_value' => $pv_page_id
));
foreach($posts as $post){
echo '<!-- >>>'.$post->ID.' -->';
$pv_post_id = $post->ID;
if ($pv_post_id == get_the_ID()) {echo '<!-- active -->';};
$child_posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'post',
'meta_key' => 'srtw',
'meta_value' => $pv_post_id
));
foreach($child_posts as $child_post){
if ($child_post->ID == get_the_ID()) {echo '<!-- active -->';};
echo '<!-- >>>-----'.$child_post->ID.' -->';
};
}
}
}
;
?>




Внутренние страницы выводятся через "записи" в админке. С помощью плагина произвольных полей реализовано 2 уровня вложенности меню. За первый отвечает поле 'srpg', за второй уровень - 'srtw'. Проблемы две:

1)На последнем уровне не отображает текущее положение в меню, то есть меню свернуто.
Нужно сделать, чтобы меню раскрывалось и показывало название текущей страницы.

2)Некоторые страницы первого уровня вложенности не отображают в меню привязанные к ним страницы второго уровня.
Она является родителем трех других страниц, но две из них не отображаются в меню сайдбара, хотя поля 'srtw' этих страниц правильно заполнены.
Все новые создаваемые страницы тоже не отображаются в меню второго уровня, то есть, поле 'srtw' работает неправильно.

Буду очень признателен тем, кто поможет решить эти проблемы. Хотя бы дайте подсказку, куда копать. Проблему нужно решить срочно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.