7 полезностей, которые можно сделать после установки WordPress 2.6

Всё же заинсталил на тестовую платформу новый WordPress, а точнее просто обновил старый, но скорость работы ощутимо повысилась и, благодаря всяко-разным плагинам из powerpack-компиляции Кактуса, работать стало удобней и приятней.

Теперь поделюсь с вами подборкой небольших фишек, найденных в интернете на буржу-сайте, которые можно сделать с чистой (или обновлённой) установкой WP 2.6, дабы жить было проще и веселее.

Полезность 1. Измените папку по умолчанию для загрузки изображений

По умолчанию, как и прежде, WordPress будет помещать все изображения в папку wp-content/uploads. Но вы можете указать любое другое место, в том числе и поддомен для хранения картинок. Это сократит урл к ним, а так же обезопасит вас от потери файлов при обновлении блога. И при бэкапе вам не надо будет копировать весь архив картинок, а лишь рабочие файлы блога и плагинов.

Так же стоило бы убрать галочку перед «Сортировать загруженные файлы в папках по месяцу и году».

Полезность 2. Удалите лишний код из шапки темы

Про это писано и переписано и даже есть отдельные плагины. Речь естественно об указании WordPress’ом в шапке (header) сайта своей версии, что является буквально вызовом хакерам — вот я такой весь не обновлённый и дырявый, ломайте меня сколько влезет.
Чтобы удалить строку
<meta name="generator" content="WordPress 2.х" />, добавьте в файл functions.php, своей темы, следующее:
<?php remove_action('wp_head', 'wp_generator'); ?>

Полезность 3. Запретите людям просматривать содержимое ваших папок

Наверное, вам попадались сайты, зайдя на которые вместо стандартной html-страницы, вы видели некое подобие проводника со списком файлов и папок. Эти странички генерятся самим сервером, если он не находит индексный файл (index.php/index.html и т.п.). Чтобы такого не было (а ведь это тоже подсказка хакерам, если узнать, например, набор ваших плагинов, то можно спокойно попытаться провести XSS или SQL-инъекцию), достаточно в корне блога, в файле .htaccess добавить строку
Options All -Indexes

Полезность 4. Убираем шаблоны для Windows Live Writer

Для тех, кто не пользуется WLW или не использует встроенный превью (live preview), стоит добавить в functions.php следующую строку, чтобы не выводить в шапке ссылку на манифест:
<?php remove_action('wp_head', 'wlwmanifest_link'); ?>

Полезность 5. Отключаем контроль версий в WordPress 2.6

Если вы не в курсе, то в новой версии WordPress появился wiki-style контроль версий, позволяющий отслеживать все изменения поста/страницы на всём времени его существования. Так вот, полезность подобной фичи для блогов с одним автором довольно сомнительна, зато появляются дополнительные строки в таблице wp_posts при каждой попытке изменить/добавить текст.
Лечится это либо плагином No Revisions, либо одной строкой в wp-config.php:
define('WP_POST_REVISIONS', false);

Полезность 6. Перенос папки плагинов и шаблонов

В WordPress 2.6 у нас появилась возможность перенести папку wp-content куда угодно. Чем это полезно?
Да тем, что при обновлении и «перезаливке поверх» самого дистрибутива WP вы не потеряете свою тему, если она, например как у меня, называется default.
Тут, правда, стоит понимать, что большинство плагинов, не адаптированных под 2.6, могут «тупо» перестать работать, но если вы всё же решите перенести wp-content, то добавьте в wp-config.php следующий код:
define(’WP_CONTENT_DIR’, ‘http://www.ваш_сайт.ру/hidden-folder/wp-content’);

Полезность 7. Google XML Sitemap — изменение настроек

Если вы пользуетесь плагином для создания Google Sitemep, стоит подумать о переключении настроек генерации в «ручной» режим.

В автоматическом режиме сайтмап пересоздаётся каждый раз, когда вы изменяете или удаляете пост, а полное пересоздание xml-sitemap для блога с нормальным количеством записей — довольно ресурсоёмкая операция, которая будет «тормозить» публикацию поста, пока не будет обновлён сайтмап.
Например, у меня на блоге, на создания файла уходит 13 сек и 10 Мб памяти, что не так уж мало, учитывая, что блог содержит около 80 записей. Представляю, сколько времени и памяти требуется, блогам с 500+ постов.
В ручном режиме вам потребуется запускать выданную вам в настройках ссылку, которую можно повесить на выполнение в cron на раз в сутки. Или, если не умеете/не хотите возиться с Cron, воспользуйтесь услугами сервиса аля CronJob.

Вот такие вот полезные мелочи, надеюсь что-то было полезно не только мне.

Update: Аха-ха, вот что значит не читать долго рсс-ленту. После публикации наткнулся на перевод той же самой статьи в блоге у Дмитрия Донченко, а из комментариев и ещё один перевод обнаружился, так что прошу прощения за «баян», но больше — не меньше)

Извращения с темами WordPress для новичков и не только (Часть 3)

Последний и пока что заключительный этап в глумлении над темами многострадального WordPress.

Произвольные поля

Наверное? многие неискушенные пользователи WordPress частенько задавались вопросом: «А что же это такое «Произвольные поля«?» (или Custom Fields в англ.версии), когда их глаза попадали на соответствующий блок в панели написания поста. Постараюсь объяснить популярно и доходчиво — это потрясающая по своим возможностям фишка. Не понятно?
Хорошо, а если так — произвольные поля, позволяют добавлять к посту/странице «скрытую» информацию любого (текстового) вида, а потом обрабатывать её при выводе. Всё ещё не ясно? Ну тогда обратимся к примеру.

Добавляем «Настроение» и «Слушает»

Пишем пост и прокручиваем страницу до раздела «Произвольные поля», после чего вбиваем в название поля: «Настроение», а в текст поля «Хреновое» (ну или у кого-что, а у меня сегодня голова раскалывается), таким же манером добавляем «Музыка» и то, что у вас сейчас играет.
В нужном файле темы (думаю, вы уже усвоили, что файл index.php отвечает за внешний вид главной, single.php — посты, page.php — страницы, search.php — поиск и т.д.), в любом месте добавляем:

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

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

Вставка изображения со ссылкой на пост

Сперва, создадим произвольное поле article_image и укажем в нём полный путь до изображения.
custom_fields_img
В теме же вставим следующий код:

Тут требует пояснения только одна функция — get_post_meta();. В неё передаётся три параметра: первый — ID поста, данные о котором мы хотим получить, второй — название произвольного поля, третий — принимает значения true или false и определяет — получать в результате 1 значение или несколько. При помощи $post->ID мы передаём ID текущего поста и соответственно «вынимаем» данные из поля.
Пример тоже довольно поверхностный, потому что при использовании такого кода, мы обязаны указывать данные для произвольного поля, иначе получим кривой код без ссылки.

Случайное изображение

Чуть выше я упомянул, что мы можем получить одно или несколько значений, это подразумевает, что под одним и тем же именем мы можем передавать столько параметров, сколько захотим. Как этим воспользоваться — решать вам, тут потребуются небольшие познания в php, а точнее понимание того, что такое массивы и как ими пользоваться. Закончу с произвольными полями небольшим кодом, выводящим случайную картинку из списка переданных, либо картинку по умолчанию.

Ничего сложного тут нет, поэтому без пояснений — если что, почитайте про соответствующие php-функции.

WP List Pages

Возможно вы уже натыкались на функцию wp_list_pages(), когда модифицировали темы, теперь посмотрим на неё поближе.
По своим свойствам wp_list_pages() немного напоминает wp_list_categories(), который упоминался во второй части «Извращений», только работает не с рубриками, а со страницами (заметьте, не с постами). У него так же есть параметры include/exclude, управляющие выводом определенных страниц по ID, сортировка при помощи sort_column и многие другие. Отмечу только, пожалуй, параметр depth, который определяет глубину списка при выводе:
0 — все страницы и подстраницы в виде иерархического дерева;
-1 — все страницы и подстраницы в виде ненумерованного списка;
1 — только страницы верхнего уровня иерархии;
2 и больше — указанный уровень вложенности.

Sitemap или Карта сайта

Блогу как таковому, имхо, карта сайта без надобности, потому что это будет просто список постов, а вот если делать, например, сателит, с статичным набором страниц и несколькими уровнями вложений (Главная > Информация > Актёры > Актёр), то будет не плохо иметь страницу, с которой можно было бы попасть на любую другую. Да и поисковики будут довольны — любая страница в 3 клика.

Данный код выведет нам список всех страниц и подстраниц кроме 10, которая и является самой «Картой сайта».
«А куда поместить этот код? Нам же он не на каждой странице нужен!» — воскликните вы. Терпение-терпение, дочитайте до конца и узнаете, как назначать отдельным страницам отдельные шаблоны.
Хотелось бы подчеркнуть, что речь идёт не о google-sitemap, который полезен и блогам, для более качественной индексации.

Динамический вывод подстраниц

Если вы поместите следующий код в sidebar.php темы, то при заходе на страницу, будут выводиться все её подстраницы, если они конечно есть.

Параметр echo просто блокирует вывод, ведь нам надо проверить — есть что выводить или нет.

Шаблоны для страниц

Если вы дочитали до этого момента, то узнаете таинство создания различных шаблонов для страниц! Для тех, кто использует WordPress не как блог-платформу, а как CMS, это довольно полезное знание.
Сейчас вы будете приятно удивлены тем, как всё оказывается просто:
1. Заходим в папку своего шаблона и создаём php файл с любым именем (я сделал себе stats.php)
2. Открываем его в редакторе и вставляем следующий код

3. Открываем в админ.панели ту страницу, которой хотим назначить шаблон и выбираем его в правом меню.
template_sidebar
Всё, теперь у вас при вызове этой страницы будет применяться именно выбранный шаблон. Результат на странице статистики.
Главное аккуратно скопировать первый блок <?php … ?> и назначить имя.

Произвольная главная страница

Часто встречал людей, которые задавали один и тот же вопрос — и на форумах, и «в живую» — как сделать так, чтобы на главной показывалась какая-нибудь другая страница, а не список постов?
И, как всё гениальное, это просто сделать, если не сказать оооочень просто. Идём в Настройки > Чтение, а дальше всё видно на картинке.
main page


Ну вот и закончились наши «Извращения». Но учитывая то, что о WordPress ещё СТОЛЬКО всего рассказать, думаю, нас ждёт ещё много интересного и необычного. Например, о том, как постить в блог через e-mail.
Хотелось бы услышать, какие темы вам интересны и вы хотели бы, чтобы я их осветил. Это не обязательно должно быть связанно с WordPress, я ведь и многое другое умею)

phpBB Google Sitemap Gen

Изучая различные материалы по SEO узнал о существовании файла sitemap, который используют некоторые поисковые роботы для оптимизации индексирования страниц. Хотя почитав форумы и отзывы, сложилось впечатление, что эффект от размещения данного файла не слишком велик, но ничто не мешает его использовать — больше не значит хуже.
Синтаксис файла довольно прост и представляет собой обычный xml-файл с небольшим количеством стандартных тегов, которые описывают каждую страницу в виде ссылки с дополнительными параметрами, из которых особый интерес представляют – частота обновления (<changefreq>) и приоритет (<priority>). Подробно можно почитать на гугле или на официальном сайте протокола.
Сайтом, который был взят как тестовый стенд, но с реальной информацией и определенной посещаемостью, стал – www.v13.ru. Так как это сайт игровой гильдии, то как такового контента на нём нет, но есть форум и несколько страниц с дополнительными игровыми модулями (DKP-таблицы и запись на рейды). И тут я столкнулся с первой проблемой – как отображать в одном sitemap файле статичную и динамическую информацию (ссылки на разделы сайта и ссылки на топики форума).
Всё оказалось довольно просто – помимо самого sitemap, есть так называемый sitemapindex – который ссылается на другие файлы sitemap, но находится все файлы должны в пределах одного домена.
Следующее, что заставило задуматься – как получить файл sitemap для форума phpBB, на котором около десяти разделов и более тысячи топиков. Понятное дело, что делать это руками – дело глупое и неблагодарное, поэтому был применен поиск и найдены несколько скриптов, которые создают файл из данных БД, но при ближайшем рассмотрении все они были отброшены, потому как либо делали слишком много лишнего (неоптимизированные запросы к БД), либо требовали доработки (привязка с имени таблиц по умолчанию).
Решено было написать свой скрипт, который можно скачать по ссылке (phpBB sitemap gen v.0.0.8.rar).

Что его отличает от аналогичных скриптов?

· Автоматическое определение УРЛ форума и имён таблиц в БД

· Выдача разделов и топиков форума

· Определение частоты обновления и приоритета топиков

· Установка простым копированием файла скрипта

Когда писал скрипт, то задумался – по какому критерию определить частоту обновления и приоритет для каждого топика. В итоге решил вычислять частоту обновления от даты последнего комментария (<7 дней – daily, <30 – weekly и т.д.), а приоритет в зависимости от количества просмотров топика в отношении к среднему и максимальному количеству просмотров на форуме.

=========================
Изменения в версии v.0.0.7:
1. Исправлен баг в работе скрипта, при наличии мода Advanced post merging
2. Добавлен учет топиков «прикрепленных» и «объявлений» (+0.1 приоритет)
3. Исправлен баг с доп. слешем (‘/’) в УРЛ
4. Скрытые и не доступные для публичного доступа разделы форума не попадают в сайтмап.
5. Версия пространства имён обновлена до последней (0.9) версии (xmlns=»http://www.sitemaps.org/schemas/sitemap/0.9″)
=========================

Пока что есть пара идей по доработке скрипта — выдача файлов в архивированном (.gz) формате, а так же разбивка на несколько sitemap, если количество топиков > 50000, возможно добавление информации по пользователям.
Все вопросы и пожелания в комментарии или на почту.