Как сделать тему WordPress виджет совместимой за 3 шага

В комментариях к последней статье «Виджеты — это очень просто!» попросили рассказать, как же сделать тему виджет совместимой. Честно говоря, я думал, что на офф.сайте это описано, а как выяснилось написано то оно написано, да не совсем там.

В общем, отрыл я пошаговое описание того, как нужно «грамотно» виджетизировать свою тему, которое ниже предлагаю вам в своём переводе с небольшими корректировками и дополнениями.


Шаг 1. Редактируем functions.php

Сперва необходимо удостоверится в том, что в папке с вашей темой находится файл function.php, а если таковой отсутствует, то создайте его сами.
Следующим шагом нам необходимо определиться — как у нас формируется сайдбар. Откройте свой sidebar.php и попытайтесь вникнуть в код и понять, что используется для формирования сайдбара — списки (<ul>) или дивы (<div>).
Например, у Артема сайдбар стандартный, из списков и заголовков второго уровня, что видно по коду:

А вот у Максима напротив, сайдбар состоит из последовательных блоков div, обрамленных изображениями «скругленных углов», а уже внутри дива находится контент виджета. Кусок кода, чтобы было (возможно) проще понять, о чём я говорю:

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

Достаточно в functions.php добавить блок кода, чтобы в итоге получить сайдбар на основе списков с заголовками 2 уровня:

Если файл functions.php вы не создавали с нуля, то советую сперва просмотреть его на наличие указанного выше кода, чтобы не получилось дублирования.

Если же, вы используете, какой-то более извращенный метод (ничего личного, Макс:-)), то код может принять устрашающий вид, аля:

Дам небольшие пояснения, строка, передаваемая в параметр ‘before_widget’ будет выводится как начало любого виджета, а ‘after_widget’ — конец. Т.е. тут мы задаём тэги обрамления виджета. ‘before_title’ и ‘after_title’ соответственно определяют обрамление заголовка виджета (это все те «Рубрики» и «Самое читаемое»). В итоге мы получим дивный сайдбар с заголовками 4 уровня.

Для особо замороченных существует возможность получить при выводе виджета его id (генерится из имени виджета) и класс (получается в процессе обработки виджета). Т.к. ‘before_widget’ пропускается через sprintf, то в любое место строки можно передать %1$s и %2$s, чтобы при выводе получить соответствующие параметры. Надеюсь «замороченные» поняли, о чём я.

Шаг 2. Проверяем сайдбар и добавляем на него виджеты

Чтобы понять работает наш сайдбар или нет, нужно добавить на него несколько виджетов.
Идём в админ панель, далее «Внешний вид > Виджеты» и лицезреем (или нет, если забыли сохранить и/или загрузить functions.php в свою тему) панель сайдбара, куда можно (и даже нужно) натаскать пару-тройку виджетов. И главное нажать «Сохранить», после чего перейти к третьему шагу.

Шаг 3. Добавление сайдбара в шаблон

Ну и наконец-то то, ради чего всё делалось — подключение сайдбара в шаблон.
Тут есть простой и очень простой способ. Оба заключаются в редактировании файла sidebar.php вашей темы.
Простой способ:
Вставить сразу после строки <div id=»sidebar»> следущий код

а перед последним </div> код — <?php endif; ?>
Очень простой способ заключается в том, чтобы понять для себя раз и навсегда, что никто уже не использует шаблоны без виджетов и, стерев предварительно ВЕСЬ код из sidebar.php, скопипастить туда:

Чем меньше кода в подключаемом файле, тем быстрее у нас всё работает (хотя на таком уровне это конечно «мёртвому припарки», но всё же).

Теперь заходим в свой блог и наблюдаем работающие виджеты.


Если что-то не получилось, то пишите в комментарии о проблемах, с которыми пришлось столкнуться, возможно, ответы будут полезны и другим.

И ещё, я думаю — писать пост про создание темы с несколькими виджетами или нет? Пригодится тебе такая статья, читатель, или нет?

Выпадающее меню “имени Suckerfish” в WordPress

За последнее время сразу несколько человек поинтересовались у меня, а не в курсе ли я, как делать выпадающие меню в WordPress? Я честно отвечал «Нет», потому что с содроганием вспоминал, как когда-то, на заре изучения web-кодинга, пытался сделать более-менее нормальное выпадающее меню. Триста раз проклял я тогда и java-script, и html, и, конечно же, все браузеры.

Но раз люди спрашивают, то появляется жгучее желание им помочь, вот и полез раскапывать, как дела обстоят сейчас и что новенького умные дядьки намутили, и даже, знаете ли, нашёл. Причём нашёл и очень сильно удивился тому, как это было сделано — вот что значит мало практиковать вёрстку и работать с CSS, потому что, по сути, для того, чтобы намудрить ОТЛИЧНОЕ выпадающее меню, достаточно знать:
а) как делать ненумерованные списки в html (<ul></ul>)
б) уметь копипастить файл-стилей

Ну что же, если эти два пункта и то вызывают у вас сомнения, то буду предельно доступно излагать по шагам, а нетерпеливые могут сразу перейти сюда и посмотреть/пощупать своими руками, итак

Шаг 1. Готовим список пунктов меню руками

Сейчас объясню суть создания выпадающего меню из списков и после этого мы сделаем простейший список, который и будем мучить.

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

Всё просто и, я думаю, дополнительные разъяснения не требуются, главное не забыть указать у внешнего меню class=»nav» и id=»nav-one».

Шаг 2. Стилизуем списки

Сам файл стилей не слишком большой, но между тем целиком код в блоге я приводить не хочу, поэтому советую для дальнейшей беседы скачать файл стилей, а я буду просто рассказывать про принцип работы, ссылаясь на него.
Берём файл sfstyle.css и открываем блокнотом или любым другим редактором (если кому интересно, то я использую Zend Development Environment или, проще говоря, ZDE).
Ну что же, приступим.

Первым делом уберём у всевозможных списков все отступы и прочие списочные атрибуты, это делается в .nav, .nav ul. После чего выводим их в строчку, а не как обычно, за это у нас отвечает float:left; в .nav li. Сразу обращу внимание на то, что мы везде применяем относительное (relative) позиционирование (position), чтобы элементы появлялись в строго заданных им местах, относительно родительских элементов.

Теперь нам необходимо спрятать внутренние списки с глаз долой и отображать их только при наведении. Тут мне попалось два способа:
1) Найденый на A List Apart — для вложенных ul элементов устанавливаем атрибут display:none;, а при наведении (li :hover ul) возвращаем в нормальное значение block.
2) Попавшийся на одном Ajax-ориентированном сайте — прятать список за экран (top:-999em;), а потом устанавливать позицию при наведении.

Так как я взял CSS из второго варианта (почему станет ясно позже), то с первым предлагаю поэкспериментировать самостоятельно.

В принципе на этом можно было бы и закончить, если бы не всеми любимый Internet Explorer (будь он неладен), который плохо обрабатывает псевдо-класс :hover, поэтому переходим к следующему шагу.

Шаг 3. Немного java-script и jQuery

Как это не прискорбно, но java-script придётся применять в любом случае, но я имею вам предложить целых два варианта (ну на самом деле их, наверное, больше), а вы уж сами решайте каким воспользоваться. Объяснять как именно ЭТО работает, не буду, скажу только, что всё сводится к прицеплению обработчкиков при наведении для всех li внешнего списка.
Способ 1 — Чистый java-script

Способ 2 — C применением jQuery

Кому как, а мне визуально больше нравится второй вариант, к сожалению, тут есть одно «НО» — необходимость подключения библиотеки jQuery. Не скажу, что это огромный минус, потому что: а) она идёт в комплекте с WordPress, так что ничего дополнительно скачивать не придётся; б) возможно какой-то из установленных у вас плагинов уже ею пользуется. Сама библиотека весит 20-30кб, поэтому особо не обременит пользователя, к тому же грузится она только первый раз, а потом подгружается из кэша. И не стоит забывать, что она позволяет делать многие интересные вещи, о чём ниже, в пункте 4.

Сейчас я объясню как её подключить:
1. Проверьте, не подключена ли она уже каким-нибудь плагином, для этого откройте любой пост в своём блоге и в html коде поищите слово «jQuery».
2. Если его нет, то лезем в файл темы header.php и где-нибудь перед </head> вставьте
<script type=»text/javascript» src=»http://ваш_домен/wp-includes/js/jquery/jquery.js»></script>

Кстати, если кто не знает, то приведенные выше java-script листинги нужно тоже вставить в хэдер до </head>, обрамив с обоих сторон <script type=»text/javascript»>…</script>

Шаг 4. jQuery-бонус — плавное меню

Раз уж мы вынудили пользователя скачать лишних целых 25кб, то надо его за это как-то наградить:)
Как вы смотрите на то, чтобы сделать появление меню плавным? Думаете сложно? А как вам вот такой код?

Помоему просто отлично, а главное понятно) Добавлю лишь, что вместо «fast» можно добавить «slow» или любое число в миллисекундах.

Тем, кто всё это прочёл думаю стоит посетить эту страничку с примером, где теперь должно быть всё понятно, а если остались какие-то вопросы или я что-то не точно написал — прошу в комменты.

Теперь думаю при помощи этой методики не составит труда делать различные меню — при помощи всяких там wp_list_categories и иже с ним.

ПыЦ: Только не спрашивайте меня, почему SuckerFish. Как я понимаю — это означает рыбу прилипалу или я ошибаюсь? Есть среди читателей знатоки ангельского языка?

Адаптируем тему под WordPress 2.3.x

Обещал, значится, вот и пишу. Если кто-то ожидает «откровений», то думаю несколько напрасно, но для общего развития людям, интересующимся CMS WordPress и желающим идти в ногу со временем, ознакомиться стоит.

Многих людей останавливает от перехода на WordPress 2.3 сам процесс апгрейда до новой версии, и я вполне их понимаю, потому что сталкивался с «кривыми» апдейтами, когда приходилось править «напильником» кодировки или наблюдать округлившиеся глаза после «преобразования категорий в тэги» и фразу «Эээ… а как это сделать обратно?».

Поэтому, если уж обновляетесь, то делайте это правильно, а, если есть возможность, попросите людей знающих. Они это сделают и быстро, и качественно, а то ведь можно и так конвертнуть базу, что «и» и «ш» пропадут и обратно их уже не получить.

Ну а теперь к теме поста. Первым делом определимся с тем, что у нас реально нового появилось в WordPress 2.3 относительно тем: 1. Тэги, 1а. Облако тэгов, 2. Несколько Deprecated тэгов и их новые аналоги.
Пройдёмся по порядку.

1.Тэги.

Да-да, теперь у нас есть встроенные тэги (ура-ура!), а так же несколько тэгов-разметки для работы с ними:
the_tags — выводит все тэги, назначенные посту, используется внутри Loop.
Синтакис простой: the_tags(‘текст ДО’, ‘разделитель МЕЖДУ тэгами’, ‘текст ПОСЛЕ’).
Примеры из кодекса:
the_tags(‘Метки:’, ‘, ‘, ‘<br />’); — выведет текст «Метки:», список тэгов через запятую, а потом перейдёт на новую строку.
Или вот код, выводящий тэги в виде ненумерованного списка the_tags(‘<ul><li>’,'</li><li>’,'</li></ul>’);

get_the_tags — функция возвращает (заметьте, не выводит, а только лишь возвращает) список всех тэгов, назначенных посту, в виде массива объектов. А вы уже с ним можете делать что хотите, т.е. формировать какие угодно конструкции и вводить проверки, работая с каждым тэгом в отдельности. Работает только в Loop.
Вот пример того, как выводить тэги в виде картинок, с соответствии с названием (стоит понимать, что картинку нужно положить в папку ДО применения тэга):

Всё просто, во второй строке мы сохраняем в переменную posttags все тэги данного поста, в третьей проверяем попался ли нам хоть 1 тэг (вот, кстати, и ещё одно применение get_the_tags() — проверка на существование тэгов, пример будет чуть позже), в четвёртой строке начинаем выдёргивать по очереди все тэги и с 5 по 9 строку выводим картинку в ссылке.
В принципе строки с 6 по 9 можно объединить в одну, это я чтобы в блоге за края не уезжало.

А вот этот коротенький код будет выводить тэги только тогда, когда они есть. Желательно использовать в том случае, если вы обновляли свой блог с более ранней (<2.3) версии и не успели "пометить" все посты, в таком случае пользователь не будет удивлён строчкой "Метки:" и пустым пространством за ним.

Ну и чтобы закончить с get_the_tags(), вот список параметров, которые можно получить через $tag->параметр:

  • term_id — id тэга
  • name — имя
  • slug — сокращение, сгенеренное из имени. Если вы используете RusToLat, то генериться он будет в транслите.
  • count — общее количество раз, которые тэг встречался в блоге.

single_tag_title — функция выводит/передаёт в переменную, заголовок страницы тэга, т.е. той, которая будет доступна при просмотре всех постов с определенной меткой (/tag/wordpress). Я кончено могу и ошибаться, но это 100% аналог тэга single_cat_title, причём, если вы применяете последний, то он адекватно будет выводить и заголовки для тэгов, а не только категорий.

1а. Облако Тэгов

До меня уже Максим подробно описал работу с облаком тэгов, поэтому просто процитирую его:

Для того, чтобы вывести облако меток, например в сайдбаре нужно использовать функцию wp_tag_cloud(). Функция принимает следующие аргументы (указаны значения по-умолчанию):

  • ‘smallest’ => 8 (минимальный размер шрифта)
  • ‘largest’ => 22 (максимальный размер шрифта)
  • ‘unit’ => ‘pt’ (единицы измерения)
  • ‘number’ => 45 (количество меток в облаке)
  • ‘format’ => ‘flat’ (разделитель: flat — пробел, list — список, array — массив)
  • ‘orderby’ => ‘name’ (сортировка: name — по имени, count — количеству записей)
  • ‘order’ => ‘ASC’ (порядок сортировки: ASC — прямой, DESC — обратный)
  • ‘exclude’ => » (исключить метки, указываются через запятую)
  • ‘include’ => » (включить метки, указываются через запятую)

Полезность для работы с тэгами.

Если кто ещё не знает о существовании такого мега полезного плагина как Simple Tags, то могу только… посоветовать его немедленно скачать и установить! Так же не забываем благодарить тов. Лекактуса за качественную локализацию и своевременные обновления.

Что может плагин (взято у Лекактуса):
Simple Tags — это ПРЕВОСХОДНЫЙ инструмент для управления вашими метками WP 2.3.
Он был написан со следующей философией: лучше производительность, больше безопасность и преподнесение новых функций!

  • угадывает метки при вводе и подставляет из существующих
  • автоматические подходящие метки для записи
  • управление метками (переименование,удаление объединение, поиск и добавление меток, редактирование коротких ссылок меток)
  • список непомеченных страниц/записей
  • массовое редактирование меток
  • возможность добавлять метки в страницы (не только записи) и включение их в результаты поиска по меткам
  • связанные записи по общим меткам
  • возможность добавлять связанные записи в RSS
  • динамические облака меток с раскрашиванием в виджетах
  • метки внутри заголовка блога
  • поддержка встраиваемых меток ([tags]tag1, tag2[/tags]) для совместимости со старыми записями, где они были заданы таким способом
  • Автоматическая вставка меток а записи (опционально, без редактирования шаблона). А также на выбор включение их только на блоге/в rss или в оба места сразу

О том, как всё это настраивать, написано ОЧЕНЬ подробно на странице плагина.
А ещё я советую вам пролистать блог Лекактуса на наличие кучи полезных плагинов и подписаться на рсс, чтобы следить за их обновлениями.

Deprecated тэги/функции и их новые аналоги

Небольшое отступление перед тем, как перейти непосредственно к самим тэгам. Если вы не знаете что, такое Deprecated (нежелательные) элементы в программировании, то в кратком виде статья с wikipedia:

Часть программы или метод, обозначенный как deprecated, являются сомнительными, и использование их в дальнейшем необоснованно. Эта часть работает в текущей версии ПО, однако может вызывать сообщение об ошибке в качестве предупреждения. Это служит для предупреждения пользователя о том, что данная часть кода может быть удалена в следующих резлизах программы.

Основной причиной объявления части кода (функций, методов, классов) как deprecated является желание улучшать код, и, при этом, со временем избавляться от устаревших подходов. Оставление старого кода наряду с новым приводило бы к неоправданному разрастанию программного продукта, что усложняло бы его поддержку, изучение и использование. В то же время, просто удалять устаревшие части кода нежелательно, так как это нарушит обратную совместимость для пользователей данного ПО.

Короче, никто не гарантирует, что те тэги/функции, которые были помечены deprecated после релиза WordPress 2.3, вообще будут работать, а уж тем более каждая новая версия (а 2.4 уже вот-вот будет доступен) увеличивает шанс, что тэги будут выдавать ошибку или работать не верно. Поэтому просто-напросто, нужно просмотреть свою тему, найти все вхождения «нежелательных» тэгов и поменять их на новые.

Тэги работы с ссылками из блогролла

get_links_list — вывод всех пунктов блогролла в виде не нумерованного списка.
wp_get_links — выводит ссылки из определенной категории блогролла, в виде списка.
get_links — настраиваемое отображение ссылок из блогролла.

На смену этим тэгам-разметки пришла (причём ещё в 2.1 версии, но запретили их только сейчас) функция wp_list_bookmarks(), которая делает всё тоже самое, только лучше.

Если использовать wp_list_bookmarks() без параметров, то на выходе получим список ссылок из блогролла, разбитые по категориям, отсортированные по имени, с картинкой, если она указана; так же в ссылке будет описание в title, взятое из соответствующего поля; рейтинг указан не будет.
Понятное дело, что параметров уйма:

  • categorize — разбивать ли ссылки по принадлежности категории? 1 — Да, 0 — Нет.
  • category — ID категорий через запятую, которые нужно отображать.
  • category_name — тоже самое, что и category, но указываются имена категорий.
  • category_orderby — по какому полю сортировать категории. name — имя (по-умолчанию) или id.
  • category_order — порядок сортировки по предыдущему параметру. ASС и DESC соответственно.
  • title_li — указываем текст, который будет выведен перед всеми ссылками, если параметр categorize=0. По-умолчанию выводится «Bookmarks», но если указать пустое значение (title_li=), то ничего выведено не будет, в том числе и <ul>, и </ul>.
  • title_before и title_after — два параметра определяющие обрамление описания (decription) категорий, при categorize=1. По-умолчанию обрамляются заголовком второго уровня (<h2></h2>). Если меняете один из этих параметров, то не забудьте заменить и второй.
  • show_private — параметр определяющий, можно ли отображать «приватные» ссылки. Если установлено значение 1, то игнорируются админские настройки и выводят даже личные ссылки.
  • include и exclude — позволяют точно указывать, какие ссылки (по ID) показывать/не показывать.
  • orderby — это уже сортировка ссылок, а не категорий, тут вариантов больше: id, url, name, target («Назначение» в русской версии), description (описание), owner (владелец ссылки, т.е. тот кто её добавил), rating, updated (дата последних изменений), rel («Отношение к ссылке»), notes («Заметки»), rss, length (сортировка в зависимости от длинны ), rand (в случайном порядке).
  • order — порядок сортировки по предыдущему параметру. ASС и DESC соответственно.
  • limit — количество ссылок, которые будут показаны. Параметр -1 отобразит все ссылки, удовлетворяющие остальным параметрам, он же и стоит по-умолчанию.
  • before, after, category_before, category_after — обрамление каждой ссылки и каждой категории (не описания, как в случае с title_before и title_after). По умолчанию в обоих случаях стоят <li>, и </li>, причём в <li> категории дописывается соответствующий ей id и class.
  • between — параметр, определяющий разделитель, между ссылкой/изображением и соответствующим описанием, по умолчанию стоит перевод на новую строку (‘\n’).
  • show_images — показывать ли изображение, если оно указано в соответствующем поле. 1 — Да, 0 — Нет.
  • show_description — показывать описание к ссылке или нет.
  • show_rating — отображать ли рейтинг.
  • show_updated — указывать ли дату и время последнего обновления.
  • hide_invisible — выводить ли ссылки помеченные как «невидимые»? В данном случае 1 — Нет, 0 — Да.
  • echo — выводить ли сразу в шаблон или просто вернуть значение в переменную (чтобы ещё мучать при помощи PHP). 1 — Да, 0 — Нет.

Фуф, осилили? Ну, тогда для самых стойких небольшой пример — код выводит ссылки из рубрики ID=2, используя при этом картинки, обрамленные в и без описания. В добавок всё отсортированно по URL ссылки.


Ну что же, вроде основные моменты в адаптации темы под WordPress 2.3.x я описал, остальное в ваших руках.

Если что-то осталось непонятным или после прочтения возникли вопросы, то не стесняемся и спрашиваем в комментариях. Хотелось бы узнать, полезно ли будет описать остальные Deprecated тэги и их аналоги, для тех, кто переходит с 2.0.x на 2.1 и выше?

Желаю успешного, а главное безглючного перехода на WordPress 2.3.

Осторожно! Злая тема… для WordPress!

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

Вообще, в последнее время очень сильно повысилось количество постов о взломе разных блогов на WordPress’е, а всё потому, что люди забывают обновляться до последней версии. Но даже наличие последней стабильной версии с офф.сайта не даёт гарантий, что вас не «поимеют».

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

Для тех, кто не очень дружит с ангельским языком, расскажу вкратце о чём там речь:
Некий дизайнер Derek Punsalan сделал темку (а точнее даже несколько) для WordPress и решил их подарить всему миру. В итоге она разлетелась по куче разных тематических архивов, одним из которых был WpSphere. И что вы думаете?

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

Если вы не разбирается в PHP, поясню — такой метод применяется, чтобы скрыть реальный исполняемый код, потому что после декодирования (функция, base64_decode), текст будет выглядеть несколько более подозрительно

В результате выполнения этого скрипта, с одного из серверов (я указал лишь часть исходника) подгружался java-script. По словам одного из блоггеров, Пола Кэрола, который проводил исследования по поводу «вредоносности» данного кода, выходит, что ничего плохого не происходило, а Wp-Sphere просто мониторили количество установок тем.

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

Весь этот пост написан для того, чтобы вы задумались перед установкой очередной темы, скаченой из не проверенных источников. Или, во всяком случае, проверили, что там у неё внутри, а если не можете сами (по причине, что любой код для вас — набор бессмысленных знаков), то попросите того, кто понимает, можно и меня.

И напоследок, к проверенным источникам с лёгкостью могу отнести сайт themes.wordpress.net, ибо официальный, а так же советую ознакомиться с «Кратким руководством по безопасности WordPress» от Максима, скоро постараюсь опубликовать не краткое, а большое и разностороннее.

Мира вам и безопасного интернета и WordPress.

Как повысить количество скачиваний вашей темы

Пост посвящается всем дизайнерам и верстальщикам тем под WordPress.

Порой я впадаю в уныние от того, что дизайнер из меня никакой, а вёрстка не приносит радости, а только нервный тик. Особенно когда подгонишь всё качественно в FireFox, а потом посмотришь на сайт в IE. Сидишь и тихо всхлипываешь.
К чему я это пишу? А к тому, что умей я быстро и качественно делать темы для ВордПресса, то вполне возможно имел бы ого-го сколько бэклинков, ведь никто не мешает вставить ссылку на себя в футере.
Если глянуть на статистику того же themes.wordpress.net, то в топе темы с количеством скачиваний от 10000 и больше, и если даже прикинуть, что лишь 1/10 из них будет установлена, то… 1000 сайтов с бэклинками С КАЖДОЙ СТРАНИЦЫ. А что если сайт ещё и популярным будет?
Причём, что самое приятное, затраты на это минимальные — сделать тему, разместить её в разных базах и всё — сиди, жди пока скачают. А теперь дам несколько советов, которые позволят повысить количество скачиваний и качество тем.

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

Нестандартный подход.
Частенько ВордПресс обвиняют в том, что сайты, сделанные на нём, выглядят все совершенно одинаково. Ещё бы, ведь большинство т.н. дизайнеров не заморачиваются, а просто редактируют стандартную тему (может слышали такое название — Kubrick). Придумайте что-нибудь новое и нестандартное, такое, чтобы при первом же взгляде на превьюшку хотелось бы «потыкать» сайт.
Отличным примером темы «не как все» является не безызвестный сайт http://browsehappy.com/. А ведь и не скажешь с первого взгляда, что это WordPress.

Создавайте тематические темы.
Не пытайтесь сделать абстрактную тему «для всех», если вы хотите, чтобы ваше творение не только скачивали, но и использовали, то узкая тематика подойдёт для этого как нельзя лучше. Я, например, не нашёл ни одной темы для WordPress по Гарри Поттеру, а ведь, при таком количестве фанатов и посвещенных ему блогов, тема была бы ОЧЕНЬ популярна. Подумайте об этом:-)
Или сезонные темы, а так же темы к таким праздникам как Рождество/Новый год, их точно будут качать, главное чтобы они были в доступе к нужному моменту.

Не используйте дешевый клипарт.
И тут не столько дело в деньгах, сколько в качестве применяемых в теме картинок. Печально лицезреть хорошо свёрстанную тему, в которой изображения в хэдере не чёткие или пестрят пикселами. Изучите хорошенько, какие форматы сжатия изображений для чего лучше подходят, ведь мы же хотим, чтобы пользователь дождался загрузки страницы.

Старайтесь не применять в своей теме плагины.
Да, порой хочется расширить функционал своей темы за счёт плагинов, но не забывайте, что у пользователя, который собирается использовать её, вашего набора плагинов скорее всего не будет. С другой стороны это не мешает вам подготовить свою тему так, чтобы при активации определенных плагинов она адекватно на это реагировала. Делается это простой проверкой в коде темы и соответственно вывод дополнительного кода. Очень удобно при работе с популярными плагинами, которые можно стилизовать под тему, например тот же Wp-PageNavi. Главное, чтобы это было «прозрачно» для конечного пользователя и являлось «приятным дополнением», а не принуждало что-то ещё скачивать.

Вкладывайте в тему исходник дизайна.
Если вы облегчите перерисовку некоторых элементов «под себя», то шансы увидеть бэклинки повышаются. Не обязательно выкладывать psd всего дизайна целиком, а вот такие элементы, как логотип, фоновые изображения и т.п. можно положить в отдельную папку в теме. Люди будут благодарны, уж поверьте мне, сам радуюсь, если нахожу исходники отдельных элементов в архиве.

Сделайте тему на нескольких языках.
Обычно в темах не так много элементов, которые требуют перевода, и для знающего человека перевод занимает от силы полчаса времени. Только вот таких вот знающих людей обычно не так много. А обычный пользователь сразу же впадает в ступор, когда при активации темы, видит текст на не родном языке. Я сужу об этом по количеству топиков с вопросом: «а как мне перевести тему»/»локализуйте мне тему» на разных форумах.
Если вы заранее позаботитесь об этом, то многократно увеличите количество загрузок. Причём, все текстовые элементы в 90% случаев одинаковы во всех темах, поэтому можно сделать заготовку из .MO файлов на разных языках и вкладывать их в архив.

Будьте разнообразнее в оформлении и цветовой гамме.
Сейчас во всём популярен минимализм, в том числе и в цветовом оформлении. В большинстве своём на глаза попадаются темы в чёрно-белых или сине-голубых тонах. Это же скучно. Сделайте качественную розовую тему с цветочками, и изрядное количество блоггерш-домохозяек будут вам благодарны, а уж они то точно не знают, как убрать из футера ваш бэклинк 😉
Согласитесь, данный сайт выглядит более чем приятно.

Осторожнее со спонсорством.
Пару раз попадались темы с уже встроенными блоками адсенса автора. Смеялся долго, вырезая их из исходников. Во-первых, где-то слышал, что гугл вполне может забанить аккаунт, если клики приходят с неизвестных сайтов, а во-вторых, ну имейте же совесть.
И не следует в футер пихать по 10 ссылок, в надежде поднять выдачу разным своим проектам. Такие блоки со 100% вероятностью будут стёрты, так что вы не получите даже ссылки на себя. Будьте скромнее и довольствуйтесь малым… в больших количествах.

Проверьте тему в популярных браузерах.
Это очень важный момент, о котором многие забывают. Не обязательно впадать в истерию и тестировать её во всех существующих браузерах, достаточно четырёх: IE6, IE7, FireFox и Opera. Или воспользуйтесь сервисом http://www.browsershots.org/.

Разместите тему в каталогах.
Мало выложить тему у себя в блоге, нужно ещё и оповестить популярные (и не очень) каталоги тем об этом. Большинство из них можно найти, просто введя в гугле фразу wordpress themes. Если в каталоге нет свободной возможности добавить тему, то отправьте её по почте администратору, ведь размещение новых интересных тем не только в ваших интересах, но в интересах каталога.
При регистрации укажите в названии наиболее популярные слова, связанные с тематикой, а так же регистрируйтесь сразу в нескольких категориях, чтобы с максимальной вероятностью попадать в выдачу.

Не забудьте сделать скриншот.
Когда я вижу в предпросмотре «Screenshot is not available», то я даже не кликаю на ссылку demo, чтобы посмотреть, как тема выглядит в действии. Тоже самое касается и картинок, где вместо превьюшки просто написано название темы. Когда я выбираю тему, то хочу хотя бы примерно представлять, что увижу, а не тратить время понапрасну.

Не забывайте обновлять темы.
В WordPress 2.3 появились встроенные тэги, отличный повод подновить тему, и добавить в описание WordPress 2.3 ready или tags included. Вообще, чем полнее описание и количество «фич» в нём указано, тем лучше.


Ну вот собственно и всё, что мне пришло в голову. Если вы делаете качественные темы, то можете оставлять ссылки в комментариях, вдруг мне приглянется, обещаю в таком случае оставить на вас ссылку;-)