Predvoditelev.RU

Функция вывода своего списка страниц в WordPress

15 Сентябрь 2008, 22:30

Делая шаблон для WordPress понадобилось продублировать список страниц в следующем виде:

ссылка | ссылка | ссылка | ссылка

С помощью стандартной функции wp_list_pages такой вывод сделать не представляется возможным, так как функция возвращает ссылки на страницы в виде древовидного списка <li>…</li>. Если бы первый или последний элемент имели уникальный класс, то можно было бы с помощью CSS немного поизвращаться и сделать-таки необходимый вывод, но увы…

Ничего умного не придумав - полез в гугл… Обнаружилась только одна заметка в блоге на эту тему. Приведенная там функция некорректно работала при использовании ЧПУ. В общем немного подредактировав её - получил работающий вариант:

function niko_get_list_pages() {

    global $wpdb;
    $query = "SELECT * FROM ".$wpdb->posts." where (post_type ='page') and (post_status='publish') ORDER BY ID ASC LIMIT 10";
    $result = mysql_query($query);

    $num_rows = mysql_num_rows($result);
   
    $i = 1;
   
    while ($row = mysql_fetch_array($result)) {
        $title = $row['post_title'];
        $link = get_page_link($row['ID']);
        echo "<a href=\"$link\">$title</a>";
        if ($i<>$num_rows) echo ' &nbsp;|&nbsp; ';
        $i++;
    }

}

Функция выводит в необходимом формате список ссылок на 10 страниц, отсортированные по ID (по возрастанию). Функцию довольно легко модифицируется под любой формат вывода.

Чтобы использовать её в шаблоне - добавляем код функции в файл functions.php. В нужном месте шаблона вызываем функцию niko_get_list_pages().

PS Для подсветки синтаксиса установил плагин для WordPress - CodeColorer. Плагин поддерживает кучу языков: actionscript, ada, apache, applescript, asm, asp, autoit, bash, blitzbasic, bnf, c, caddcl, cadlisp, cfdg, cfm, cpp-qt, cpp, csharp, css-gen.cfg, css, c_mac, d, delphi, diff, div, dos, eiffel, fortran, freebasic, gml, groovy, html, idl, ini, inno, io, java, java5, javascript, latex, lisp, lua, matlab, mirc, mpasm, mysql, nsis, objc, ocaml-brief, ocaml, oobas, oracle8, pascal, perl, php-brief, php, plsql, python, qbasic, rails, reg, robots, ruby, sas, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, vhdl, visualfoxpro, winbatch, xml, xpp, z80. Рекомендую :)

Добавить комментарий

2 responses for this post

  1. Flector Says:

    инструкции кто читать будет? )) можно задать оформление типа:

    wp_list_pages(’title_li=’);

    так что изобретать велосипед было необязательно ))

  2. Предводителев Сергей Says:

    title_li - Данный параметр задает стиль и текст заголовка списка.

    При чем здесь это? Тут проблема в том, что разделитель должен быть между ссылками и не должен быть в конце или начале списка.

    Если бы у первого или последнего элемента списка был УНИКАЛЬНЫЙ класс, тогда это ещё можно реализовать.

Leave a Reply