четверг, июля 23, 2009

Нюансы разработки сайта на Wordpress

Сразу уточняю, что речь пойдет о разработке именно сайта, а не очередного блога. Т.е. задача в следующем: есть дизайн сайта – нужно натянуть его на CMS Wordpress. Что необходимо учесть в первую очередь и с какимим проблемами придется столкнуться? Давайте разберемся.

Не верите, что желания исполняются? Просто создайте свой вишлист на JustParty.ru

1. Очистить код от лишних мета-тегов

Если вы используете в шаблоне функцию wp_head() (например при использовании плагина All in the Seo), то вскоре обнаружите, как она запачкает блок <head> всевозможными мета-тегами, ссылками на RSS и т.п. Эту неприятность можно исправить следующим образом.

Создайте файл functions.php в вашей теме (если он еще не создан) и разместите код:

<? remove_action('wp_head', 'wp_generator'); remove_action('wp_head', 'wlwmanifest_link'); remove_action( 'wp_head', 'feed_links_extra'); remove_action( 'wp_head', 'feed_links'); remove_action( 'wp_head', 'rsd_link' ); remove_action( 'wp_head', 'index_rel_link' ); remove_action( 'wp_head', 'parent_post_rel_link'); remove_action( 'wp_head', 'start_post_rel_link'); remove_action( 'wp_head', 'adjacent_posts_rel_link'); ?> 

Таким образом, вы избавитесь от 9 лишних строк в блоке <head>.

2. Вывод  записей с помощью query_posts()

query_posts($query) позволяет выводить записи с помощью конструктора запроса $query. Т.е. если вам надо вывести записи только определенной категории и только 5, вы можете указать:

query_posts('cat=3&showposts=5&orderby=date');

И дальше как обычно цикл:

// the Loop <? while (have_posts()) : the_post();?> <a href="<?php the_permalink() ?>"><?php the_title(); ?></a> <? endwhile;?> 

В чем же подвох? А в том, что если вы разместите подобный код, например, в шаблоне шапки сайта, то ваш сайт просто перестанет корректно работать. Дело в том, что в точности такой же цикл у вас будет и в шаблоне записи и в шаблоне страницы, а значит заданный вами запрос query_posts() унаследуется ими.

Чтобы этого не произошло, вам нужно использовать следующую альтернативную кострукцию:

<? $my_query = new WP_Query('cat=3&showpost=5&orderby=date'); while($my_query->have_posts()) : $my_query->the_post(); ?><li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li> <? endwhile; ?> 

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

3. Несколько блоков навигации

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

Все решается очень просто с помощью встроенной конструкции wp_list_pages(), где в качестве параметра можно указать название произвольного поля meta_key, например:

<?php wp_list_pages('sort_column=menu_order&title_li=&meta_key=top_menu'); ?>

Таким нехитрым образом можно вывести определенный список страниц в любой части сайта.

На этом пока все, но я обязательно продолжу рассказывать о наиболее волнующих проблемах разработки сайта на Wordpress в следующих статьях.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru