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

Понедельник, 15 сентября 2008 г.

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

<a href="#" target="_blank">ссылка</a> |
<a href="#" target="_blank">ссылка</a> |
<a href="#" target="_blank">ссылка</a> |
<a href="#" target="_blank">ссылка</a>

С помощью стандартной функции 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().

Рубрика: Web-мастеринг | Тэги: ,

Комментарии

  • Сергей М.
    16.01.2010, 14:43:30

    Непонятно, зачем использовать мускульные функции, когда в Вордпрессе есть уже обертка:

    $results=$wpdb->get_results($query);

    Да и тут можно обойтись проще, выполнив $posts=get_posts($args) (или похожая функция, не помню - можно в Кодексе посмотреть)

  • Дмитрий
    24.08.2010, 11:15:09

    Вот практически тоже мамое:

    <?php $allpages = get_pages('sort_column=menu_order');

    foreach($allpages as $pagg):?>

    <a href="<?php echo get_page_link($pagg->ID);?>/"><?php echo $pagg->post_title ?> </a>

    <?php endforeach; ?>

Оставить комментарий
Не регистрировать/аноним
Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.
Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.
(обязательно)