Произвольный разделитель в списке страниц

Теги: , 8 июля 2009

Задача: получить список страниц в следующем виде, используя встроенную в WordPress функцию вывода страниц wp_list_pages():

Контакты | О сайте | Карта сайта

В коде это должно выглядеть следующим образом:

<a href="#">Контакты</a> | <a href="#">О сайте</a> | <a href="#">Карта сайта</a>

По умолчанию хтмл-код списка страниц выглядит примерно так:

<li class="page_item page-item-49"><a href="#" title="Контакты">Контакты</a></li>
<li class="page_item page-item-78"><a href="#" title="О сайте">О сайте</a></li>
<li class="page_item page-item-69"><a href="#" title="Карта сайта">Карта сайта</a></li>

Решение

Содержимое, которое возвращает функция wp_list_pages(), мы с помощью дополнительного параметра echo=0 поместим в переменную, в которой, используя регулярные выражения, сделаем необходимую нам замену тегов. Можно использовать один из нижеприведенных вариантов.

1-й вариант решения

<?php
	$list_pages = wp_list_pages('sort_column=menu_order&title_li=&depth=1&echo=0');
	$list_pages = preg_replace('/<\/li>[^>]*<li([^>]*)><a/is', ' | <a$1', $list_pages);
	$list_pages = preg_replace('/<li([^>]*)>/is', '', $list_pages);
	$list_pages = str_replace('</li>', '', $list_pages);
	echo $list_pages;
?>

2-й вариант решения

<?php
	$list_pages = wp_list_pages('sort_column=menu_order&title_li=&depth=1&echo=0');
	$list_pages = preg_replace('#<li\s(.+)>.+(href=".+" title=".+">.+</a>)</li>#siU','<a $1 $2',$list_pages);
	preg_match_all('#(<a.+/a>)#siU',$list_pages,$matches);
	$list_pages = implode(' | ',$matches[1]);
	echo $list_pages;
?>

В результате выполнения этой хитрой замены вышеуказанный список в виде тегов li превратится в такой:

<a class="page_item page-item-49" href="#" title="Контакты">Контакты</a> | <a class="page_item page-item-78" href="#" title="О сайте">О сайте</a> | <a class="page_item page-item-69" href="#" title="Карта сайта">Карта сайта</a>

Получился хтмл-код, которого нам и требовалось добиться.

Комментариев: 8
(голосов: 6, средняя оценка: 4.17 из 5)
Loading ... Loading ...

Дополнительный цикл без разрушения основного

Теги: , 6 июля 2009

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

Если просто сделать копию основного цикла, добавив нужные параметры через query_posts, то может так получиться, что в результате “поломаются” оба цикла. Чтобы этого избежать, необходимо у второго цикла (не основного) использовать 2 дополнительные строки кода:

<?php $temp_query = $wp_query; ?>
	<?php query_posts('showposts=3&cat=7) ?>
	<?php if (have_posts()) : ?>
		<?php while (have_posts()) : the_post(); ?>
			  ...
		<?php endwhile; ?>
	<?php endif; ?>
<?php $wp_query = $temp_query; ?>

Ключевыми в данном коде являются первая и последняя строки, которые и спасают циклы от разрушения.

—–
Хороший сайт-магазин, продающий материалы для отделки и ремонта: облицовочная плитка, мозаика керамогранит, натуральный камень, ступени. Порадует большой ассортимент продукции и действующие скидки.

Оставить комментарий
(голосов: 2, средняя оценка: 5.00 из 5)
Loading ... Loading ...

Запрет отображения ошибок на странице авторизации

При попытке авторизации на WordPress-сайте, если указаны неправильные данные (либо логин, либо пароль, либо то и другое одновременно), система выдает ошибку, в которой сообщает, что именно было введено неверно, т.е. если был указан неправильный логин, то WordPress в ошибке скажет, что логин неверен.

А такая информация увеличивает вероятность подбора логина/пароля, поскольку взломщик будет наглядно видеть, какая часть данный не подобрана.

Чтобы избежать этого, достаточно лишь добавить в файл functions.php своей WordPress-темы следующую строчку:

add_filter('login_errors',create_function('$a', "return null;"));

Теперь информация об ошибке выводиться не будет, останется только сигнальная розовая рамочка.

—–
Посетив сайт JimmClub, вы сможете мобильную аську Jimm для телефона скачать бесплатно, воспользовавшись онлайн конструктором, либо выбрать уже готовую сборку из представленного списка наиболее популярных.

Комментариев: 4
(голосов: 2, средняя оценка: 4.00 из 5)
Loading ... Loading ...