О Яндексовом Магадане или “Я хренею без баяна”

Если кто не слышал — Яндекс запустили новый поисковый алгоритм под классным названием "Магадан". Я вообще не СЕОшник, поэтому как-то пропустил это мимо ушей и даже не стал проверять, как и что он теперь ищет, всё равно для поиска всего и вся есть гугл, а остальное — от лукавого.

Чёрт меня дёрнул поискать свою последнюю статью "10 вещей, которые вам стоит знать о WordPress 2.6". Вот можете посмотреть результат выдачи.

И что мы имеем? На первом месте стоит копипаст моей прошлогодней статьи о WordPress 2.3! И это при том, что у меня на сайте ещё как минимум 2 статьи с похожим названием. Что особо улыбнуло, так это то, что выбрав "Ещё с сайта" по этому запросу, я не обнаружил как раз статьи "10 вещей, которые вам стоит знать о WordPress 2.3", которая вылезла в топ про запрос о 2.6 версии, да ещё и копией с другого сайта.

Подумал, что вылетела из индекса за что-то, но нет — всё там же она.

Дальше — больше. Дай, думаю, проверю с кавычками название статьи, может он (Магадан) ищет отдельные слова? Результат меня просто обрадовал чрезмерно, тут даже комментарии излишни.

Но я на этом не успокоился — ведь есть ещё Яндекс.Поиск по блогам, куда я и забил всё ту же фразу.

с кавычками и Чудо поиск, прямо скажем. Про то, что оригинала с сайта и в помине нет в выдаче, хотя со всех остальных статей идёт прямая ссылка на блог, я и говорить не буду.

А страница то в яндекс.блогах есть, а толку нет.

Хочу подвести итог, печальный и не утешительный:

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

— ложь, пиздёшь и провокацию 😀

Завещаю вам искать гуглом. Он и с кавычками и без оных выдаёт то что надо.

Новогодний подарок блоггерам — WordPress 2.3.2

Как всегда я плетусь в самом конце WP-движения, это я о скорости реакции на анонсы релизов)
Уже успели выложить и две разные версии русского вордпресса 2.3.2, который только-только сошёл с конвейера (от Максима и от mywordpress.ru), но, тем не менее, я всё же рискну быть не оригинальным и отписать ещё раз изменения со своими комментариями.
И так, данные взяты из официального анонса.

Улучшена производительность, при обработке постов, перед выводом пользователю.
Надеюсь, я правильно понял, то, что написано в этом тикете.
При выводе поста, да и любой другой страницы, производится множественный вызов функции get_post, через которую работают такие функции как the_title, get_permalink и т.д. Причём, хоть данные полученные от get_posts и кэшируются, но фильтрация/отбор данных происходит после получения уже ВСЕХ данных, а не ДО, что естественно сказывается на производительности. В 2.3.2 это пофиксили.

Улучшена работа функции is_admin(). Теперь нет возможности получить доступ к «Черновикам» администраторов обычному пользователю.
О «дыре» с доступом к черновикам я уже писал, вот теперь это уже и не дыра вовсе.

Ошибки базы данных теперь показываются только при включенном WP_DEBUG.
Ещё одна перестраховка от «шибко-хитрых-хацкеров», чтобы те не могли узнать названия таблиц вашей установки WordPress, при попытках sql-инъекций.

Во время установки WordPress, при нехватке прав у пользователя БД, будет выдаваться ошибка.
А, следовательно, и не будет создан «кривой» config.

Появился шаблон для отображения ошибок при подключении к БД.
Теперь любой пользователь может внести изменения в файл wp-content/db-error.php, который будет показан при невозможности подключиться к БД (например, если превышено количество одновременных подключений).

Добавлена дополнительная проверка при обработке текста, который конвертируется в ссылку.
Тут имеет место быть событие, когда вы вставляете текст с http://, а он автоматически конвертируется в аналогичную ссылку. Повышена производительность за счёт того, что теперь функция преобразования различает обычные ссылки, фтп и почтовые ящики. Стоит отметить, что, судя по всему подобные ссылки (за исключением ящиков) автоматически будут отображаться с rel=»nofollow», во всяком случае, тут всё указывает на это.

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

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

Ещё одно изменение в XML-RPC, которое связано с отображением данных о пользователе, при вызове wp.getAuthors.
Данные теперь выводятся в более ограниченном формате, а так же добавлена проверка, что пользователь имеет минимальные права (редактирование постов), чтобы ограничить распространение информации, такой как имя пользователя, его логин и прочее.

И ещё целый ворох проверок в методах XML-RPC и App, для улучшения безопасности.

И совсем маленькое добавления при проверке путей файлов, на win-серверах.


Вот и всё. Вроде бы и не много, но и не мало. Ставить, я думаю, стоит, но… только после того, как голова и руки будут действовать активно и правильно, апосля празднования НГ, а то можно дел наворотить)

И ещё, если тов. Лекактус не против, то я бы попросил его немного подправить текст на mywordpress.ru, а то что-то слишком много орфографических ошибок и местами не понятный текст. Если нужна помощь, то могу предложить свои услуги, но опять-таки — после праздничков.

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

Адаптируем тему под 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.