Как сделать тему 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, скопипастить туда:
Чем меньше кода в подключаемом файле, тем быстрее у нас всё работает (хотя на таком уровне это конечно “мёртвому припарки”, но всё же).
Теперь заходим в свой блог и наблюдаем работающие виджеты.
Если что-то не получилось, то пишите в комментарии о проблемах, с которыми пришлось столкнуться, возможно, ответы будут полезны и другим.
И ещё, я думаю - писать пост про создание темы с несколькими виджетами или нет? Пригодится тебе такая статья, читатель, или нет?
Виджеты - это очень просто!
Воскресенье, 10 февраля 2008“Не знание технологий не освобождает от…”, не, не то. “А я вот сделал, а оно не работает…”.
К чему это я? Ах да, в последнее время ко мне несколько разных человек обратились примерно с одним и тем же вопросом:
“Почему, после того как я добавил в sidebar.php код кнопки/баннера/ссылки, ничего не изменилось и я их не вижу?!”
На что я сразу выдаю контр-вопрос (нет-нет, я не еврей):
“А вы используете в своей теме виджеты?!”
Просто не все осознают, что всё что находится ниже строки:
if ( !function_exists(’dynamic_sidebar’) || !dynamic_sidebar() )
в sidebar.php будет показано ТОЛЬКО в том случае, если вы не включили ни одного виджета. В противном случае будут отображаться ваши настройки из “Внешний вид > Виджеты”.
Обычно после того, как я это объясняю, следует вопрос - “Ну и как мне поместить свой код в сайдбар/виджет?!”, да очень просто - если это обычный хтмл-код (а это в 90% случаев баннеры и стандартные ссылки/кнопки), то достаточно добавить стандартный текстовый виджет и поместить в него готовый код.
Но что делать, если виджет должен выводить результат выполнения какой-то функции? И ведь действительно, почти все “мощные” плагины, такие как ‘Popularity Contest‘ (русская версия), позволяют получать обработанную информацию из своих функций. Например, akpc_most_popular - самые популярные, akpc_most_popular_in_cat - самые популярные в какой-то категории и т.д.
Да, я знаю КАК можно сделать свой виджет, путём редактирования functions.php, но даже мне порой бывает лень это делать, а что говорить о людях, для которых внести изменения в файл темы (причём не просто копи-паст, а ещё и осмысленное редактирование) - это нечто равносильное тасканию пятидесяти килограммовых мешков?
Для таких страдальцев нашёлся чудо плагин Custom Function Widgets (скачать), авторства Kaspars Dambis из Латвии.
Как это работает.
- Скачиваете и устанавливаете как и любой другой плагин.
- После активации в меню “Внешний вид > Виджеты” появится новый раздел “Custom Function Widgets”, где вы можете указать необходимое количество настраиваемых виджетов.
- Теперь перетащите один из “Custom Function” плагинов в свой сайдбар и нажмите кнопку настройки.
- Введите в поле Function name имя нужной функции (например, st_related_posts, чтобы вывести связанные посты, при помощи плагина Simple Tags) и жмём “сохранить”.
- Вуаля, если всё сделали правильно, то можем полюбоваться на результат в сайдбаре блога.
Теперь объясню какие поля в настройках за что отвечают:
Widget title - заголовок виджета. Он будет показан при выводе (если вы специально не отключите, о чём ниже), а так же это название будет видно в панели управления виджетами.
Function name - имя функции. Указывается без кавычек и скобок.
Function variables - переменные, передаваемые в функцию. Если функция для работы требует параметры, то указывайте их тут. Важно сохранять последовательность переменных, а так же перечислять переменные через запятую, если их несколько.
HTML before и HTML after - хтмл код, который будет выводиться перед и после вашей функции. Обычно это обрамление тэгами списков, ну или возможно подключение какого-нибудь java-script.
Галочка Remove Widget title from output отключает вывод заголовка виджета в сайдбар, а Remove the default widget wrapper - отключит разрывы между виджетами.
В общем - пробуйте и пишите отзывы тут или сразу автору плагина, который очень оперативно ответил и исправил найденный мною баг. Ещё раз ссылка на скачку плагина.
Выпадающее меню “имени 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.4, дыры и апдейт в 2.3 и подсветка синтаксиса
Пятница, 21 декабря 2007Пока пишутся большие посты и другие программы, сделаю небольшой обзор того, о чём следует знать, если не каждому, то большинству.
Улучшенная система безопасности в WordPress 2.4
Хоть сам движок ещё готов процентов на 30, но уже заявлены приятные нововведения, такие как использование безопасных куки и новый алгоритм шифрования хранимых паролей.
Про протокол безопасных куки (secure cookie protocol) можно прочитать в этом .pdf (116Kb на англ.), если кратко, то новые куки выглядят так:
имя пользователя|время действия|HMAC(имя пользователя|время действия|ключ)
Причём ключ = HMAC(имя пользователя|время действия|секретный ключ), во как!
В новом протоколе реализованы такие фичи, как управление истечением времени на стороне сервера, массовая перепроверка всех кукисов, а так же предложена повышенная конфиденциальность.
Пароли же теперь буду хэшироваться при помощи phpass, который к обычному md5-хэшированию добавляет ещё возможность подсолить (“salt” - представляет собой некий набор символов; обычно это символы обоих регистров, цифры и спецсимволы, которые накладываются или склеиваются с самим паролем или с хэш-суммой пароля) и даже растянуть короткий пароль. Всё вместе это значительно увеличивает сложность взлома путём перебора хэшей.
Так же не стоит забывать, что phpass так же будет применяться в Drupal и phpBB, а значит, существует вероятность, что можно будет использовать одни и те же регистрационные данные в пределах сайта для каждого пользователя, причём без дополнительных извращений.
В принципе, код, отвечающий за кукисы и шифрование phpass’ом, уже можно скачать и опробовать, вот только не делайте этого на активном блоге, т.к. таблица пользователей будет безнадёжно испорчена, а уж если вы ещё и бэкап не сделали…
Некоторые активные дыры в WordPress 2.3.x
1. Существует возможности при выполнении определенных действий, получить доступ к Черновикам (Drafts), созданным другими пользователями, в том числе и администратором. Поэтому старайтесь не хранить в черновиках конфиденциальную информацию. Пока что дыра есть в 2.3.1 и скорее всего во всех предыдущих версиях. Ждём-с багфикса с апдейтом.
2. Дыра в плагине Wp-ContactForm, при помощи которой злоумышленник может выполнить инъекцию HTML кода и получить пересылаемые данные. Баг фикса нет, но сам плагин старенький, поэтому советую вам просто поменять его на Cforms II, тем более вы можете скачать русскую версию у Соники.
3. Уязвимость обнаружили ребята из Seo Egghead. Заключается она в возможности внедрять ссылки в старые посты, причём, обычно выглядит это так, как будто и должно быть, только вот PR естественно снизится. Подвержены такому “хаку” все версии с 2.1 по 2.3.1 включительно.
Яйцеголовые ребята советуют произвести поиск по блогу по таким словам, как: mp3, download, adshelper, softicana, casino, viagra и тому подобному (не мне вам рассказывать, чем обычно спамят)))
Обнови пермалинки правильно
У некоторых пользователей после перехода на 2.3.1 появился скверный глюк, а точнее ошибка:
“Warning: Invalid argument supplied for foreach() in /home/wallis3/public_html/wordpress/wp-includes/classes.php on line 92″
Лечится это довольно просто, но и не очевидно одновременно: нужно сперва сбросить пермалинки на те, что установлены по умолчанию (Настройки > Постоянные ссылки > По умолчанию > “Обновить шаблоны ссылок”), после чего можно вернуть свои старые шаблоны и обновить повторно - глюк должен исчезнуть.
Разметка кода на блогхостинге WordPress.com
Возможно, полезность данной заметки сомнительна, потому как у нас большой популярностью WordPress.com (не путать с бесплатной блог-платформой WordPress) не пользуется, куда чаще используют BlogSpot/Blogger или ЖЖшку, но была - не была.
Если вы ведете блог на WordPress.com, то для красивой разметки исходных кодов, у вас есть строенная реализация. Работает это так
[sourcecode language='язык']
строчка код 1
…
строчка код n
[/sourcecode]
, где язык - это на выбор: cpp, csharp, css, delphi, java, jscript, php, python, ruby, sql, vb, xml.
За основу взят SyntaxHighlighter, нашего соотечественника (как я понял) Алекса Горбачева.
Помоги найти трэкбэк
Оказывается, среди тэгов разметки WordPress есть такое чудо, как trackback_rdf, который внедряет на страницу не видимый для пользователя код, применяемый некоторыми программами и поисковыми ботами, для определения адреса трэкбэка. Сам тэг должен размещаться внутри Loop’а и быть скрыт в html-комментарий, чтобы не попадаться на глаза читателю. Выглядит это примерно вот таким образом:
Ну вот на сегодня и всё. До скорого. И берегите себя и свой блог.
Адаптируем тему под 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.