?

Log in

No account? Create an account

Развитие личности, лайфхак, личный опыт, проекты и околоайтишные размышления - http://malkin.com.ua

Previous Entry Share Next Entry
Немного про сайты на Wordpress
Я
malkinstanislav

Originally published at Блог про фриланс и интернет. Ведет Станислав Малкин.. You can comment here or there.

wordpress Волей случая мне пришлось познакомиться с Wordpress, когда я начал вести этот блог.

Сначала он мне показался «китайской грамотой» (в частности из-за своего функционального кода), но потом я привык, разобрался, как кастомизировать (натягивать шкуры) на Wordpress.

В результате чего появились блоги: malkin.com.ua, 38gadgets.ru, freelancehack.ru и скоро открывающийся fuck-office.com.

Как и ожидалось, ничего сложного в натягивании дизайна на данный блогодвижок — нет.

И вот недавно встала более сложная задача — сделать сайт-визитку на Wordpress. В принципе ничего сложного — набор статических страниц + новости.

Сделать главной страницей какую-либо из страниц можно прямо в админке Wordpress. Новости очень просто делаются через рубрику «новости», тоесть заметками в данную рубрику. C контентной областью тоже вроде проблем нет, поэтому я взялся за задачу.

Естественно я нашел мануал и быстренько решил вывод новостей с помощью кода:

<?php query_posts(«category_name=news&showposts=5&order=desc»); ?>

Ха, подумал я — все так просто. И тут, по классике жанра, начались «грабли».

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

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

Я начал искать решение. Оказалось, что если после вывода новостей написать еще раз <?php query_posts(); ?>, но уже без аргументов, то данные выводятся, но только данные главной страницы, причем на любых других страницах. Естественно меня это не устраивало.

Первая мысль, которая мне пришла  — поискать в мануале, как обнулять действие данной функции. Погуглив минут 20 и перерыв ман, я нашел только слабое упоминание (может конечно я плохо искал?), что для таких выводов (несколько раз на одной странице) нужно писать отдельную функцию, которая будет использовать WP_Query.

Так, как писать свою функцию мне не сильно хотелось как-то, да и не получилось: постоянно писало, что моя функция не найдена при вызове ее (видно где-то надо ее еще «регистрировать») — я решил методом грубой силы искать выход.

Я открыл свой шелл на сервере, где находится мой блог и с помощь mc задал поиск всех файлов, где встречается функция query_posts. Таких оказалось аж два: query.php и widgets.php в директории wp-includes (а именно там я и искал — где им еще быть-то?). Очевидно, что это не файл виджетов, поэтому я открыл файл query.php и начал его изучать.

Как ни странно — с самого верху была нужная мне функция — wp_reset_query(), которой я успешно и воспользовался. И все сразу же получилось :)

Вообще интересно выходит -  либо никто не делал ничего подобного до меня (в чем я дико сомневаюсь), либо я не правильно давал запросы к поисковику (что скорее всего). А как надо было спрашивать — до сих пор не понятно.

Таким образом строить довольно простые сайты-визитки на Wordpress — можно. Но нужно знать особенности данного движка, которых, как мне кажется — очень даже много.

Возможно кому-то пригодиться мой опыт и он не будет также, как я убивать время на поиски нужного решения :)