get_pages (свой формат вывода wp_list_pages)

Как в такой вывод сылок на Статич. страницы пристроить проверку: является ли ссылка ссылкой на текущую страницу? и в зависимости от этого втюхать li доп. класс current-page-item

        <?php $pages = get_pages(); foreach ($pages as $pagg) {
               $listpages .= '<li class="page_item page-item-'.$pagg->ID.'"><a href="'.get_page_link($pagg->ID).'" title=""><span>';
               $listpages .= $pagg->post_title;
               $listpages .= '</span></a></li>';
               echo $listpages;
         } ?>

видимо нужно как-то пристоить такую проверку? if (is_page() && $pagg->ID) == $current_page
у меня пока ничего не выходит 🙁

Дык wp_list_pages сам вставляет current_page_item. Зачем тебе свой цикл, из-за <span>, раздвижные двери делаешь?

Да 🙂
Нашла вот способ на форуме wordpress.org. так работает:
<?php
$my_pages = wp_list_pages(‘title_li=&echo=0’);
$my_pages = str_replace(‘">’, ‘"><span>’, $my_pages);
$my_pages = str_replace(‘</a>’, ‘</span></a>’, $my_pages);
echo $my_pages;
?>

блин, 2 часа убила по поиски 🙁

Так лучше. Хотя мне не очень нравится str_replace(‘">’, ‘"><span>’, $my_pages);
Я бы использовал что-то типа
echo preg_replace(‘"(<a.*?>)(.*?)(</a>)"’,’$1<span>$2</span>$3′,wp_list_pages(‘title_li=&echo=0’));

Думаю так

 <?php $pages = get_pages(); foreach ($pages as $pagg) {
               $listpages .= '<li class="page_item page-item-'.$pagg->ID.(is_page($pagg->ID) ? ' current-page-item ':'').'"><a href="'.get_page_link($pagg->ID).'" title=""><span>';
               $listpages .= $pagg->post_title;
               $listpages .= '</span></a></li>';
               echo $listpages;
         } ?>

Спасибо за варианты! Попробую оба 🙂

А чем str_replace плох?

Там написано менять "> на "><span>, а такой фрагмент встречается два раза, что породит следующий код:

<li class="page_item page-item-1"><span><a href="/about" title="О сайте"><span>О сайте</span></a></li>

По-моему, один span лишний.

Спасибо, Юрий Дмитриевич! я что-то не подумала о лишнем span

Вдогонку. jQuery решение:

$('.pagenav a').wrapInner('<span></span>')

PS Не скажу куда это вставлять 😀 И обсуждать недостатки не буду.

И еще одно решение, самое рульное (для 2.7)

<?php wp_list_pages('title_li=&link_before=<span>&link_after=</span>'); ?>
Anonymous
Отправить
Ответ на: