Максим

Правила форума

Здесь публикуются только готовые рецепты, описания и т.п. по плагинам. За темы, вроде «помогите настроить», «где найти», «ищу» и аналогичные – вечный бан.

Плагины для авторов

С плагинами для авторов мне не приходилось работать, поэтому прошу помощи. Поделитесь своим опытом их использования.

Нужно:
1. Плагин, который добавляет в профиль автора дополнительные (произвольные) поля.
2. Фото/аватара автора. Каким-то образом нужно её загрузить и потом отображать.
3. Уведомление для админа, что можно модерировать/публиковать запись.
4. Какая-то рассылка для всех авторов.

Есть такие?

Проблемы с кодировками на хостингах

Ко мне очень часто обращаются по поводу проблем с кодировками на наших хостингах. Поэтому я решил, собрать всё воедино. 🙂

На большинстве русских хостингах, включая и Мастерхост, стоит кодировка по-умолчанию cp-1251 (windows-1251). По этой причине все соединения с БД инициируются именно в этой кодировке. Для того, чтобы кодировка была, как и положено в utf-8, необходимо при создании соединения с базой данных послать её специальный запрос, указывающий, что ваш блог работает utf-8.

В WordPress’е (начиная с 2.2) можно указать значение DB_CHARSET, которое переводит соединение в utf-8. Но для наших хостингов этого мало, поскольку нужно выполнять еще одну команду (COLLATE), которая переводит и внутреннее хранение данных в utf-8.

Так вот. Возможность использования COLLATE существует только в моей сборке, поскольку во всех остальных, включая и официальную, хоть и введен параметр DB_COLLATE, но реально нигде не используется. Это просто заготовка на будущее. Поскольку я постоянно сталкиваюсь "особенностями" наших хостингов, и знаю как криво настроены кодировки, то решил реализовать сразу правильное решение.

Больше всего проблем возникает со сборкой от mywordpress.ru, поскольку когда-то Антон решил за всех пользователей, что они должны работать в utf-8. Он жестко прописал в WordPress команду перевода в utf-8, хотя реально базы продолжали работать в cp-1251. В итоге произошло достаточно странные метаморфозы.

Изначально база на хостинге работала в cp-1251, то есть кодировки по умолчанию. Данные же из блогов на сборке от mywordpress.ru поступали в utf-8. И хотя отображение было корректно, но только по той причине, что начиная с MySQL 4.1 внутреннее хранение было в юникоде. Если же база не могла "переварить" юникод, то это отображалось как выпадение символов "ш" и "и" (иногда и другие). Это означает, что многобайтную кодировку (utf-8) пытались всунуть в однобайтную (cp-1251).

Но через какое-то время, на на наших хостингах массово стали переходить на новые версии MySQL (5.0). Админы, как и положенно взяли и перевели данные, которые теоретически дожны были быть в cp-1251, в utf-8. Получилось двойное преобразование.

Если у вас такой случай, то при просмотре данных в phpMyAdmin вы увидите либо разные кодировки сравнения (сопоставления) в таблицах WordPress, либо вообще крокозяблы в данных, хотя кодировка и будет указана верной.

Дополнительно это выражается еще и в том, что у вас неверно работает поиск. Например он дожен быть регистронезависимым. Также бывают проблемы с сортировкой по алфавиту. К сожалению, побороть это недуг средствами WordPress невозможно.

Пути решения.

В моей сборке, если вы устанавливаете блог с нуля, то берите utf-8. Это почти полная гарантия, что данные будут храниться в MySQL верно. Причем и для новых таблиц! Например тех, которые создают плагины. То есть вы сможете делать корректный бэкап, сортировку и поиск.

Если вы обновляете блог, то можно попробовать обновится до моей сборки WordPress 2.2 и выставить правильные DB_CHARSET и DB_COLLATE (все в новом файле wp-config.php). Например у меня для некоторых хостингов получалось добиться нормальной работы при cp1251 и cp1251_general_ci, хотя блог и база работали в utf-8.

Для самых тяжелых случаев, включайте перекодировщик.

Самый кардинальный способ решения – это полностью переделать базу данных. То есть взять дамп всех таблиц, вручную их переконвертировать, прописать верные COLLATE и обратно загрузить. Тогда у вас будет все корректно работать и в блоге, и в phpMyAdmin.

Сразу хочу предупредить тех, кто решит изменить кодировку таблиц в phpMyAdmin – с большой долей вероятности вы просто потеряете данные. То есть, если вы рискнете на эту операцию, в обязательном порядке делайте бэкап.

Дополнительный момент следует учитывать и в том, что на наших хостингах очень любят принудительно посылать браузеру кодировку windows-1251. В некоторых хостингах есть специальная опция в настройках. Но для других существует только единственное решение – принудительно прописать кодировку в .htaccess. Причем будьте готовы к тому, что это придется сделать в каждом каталоге. Таких кривых хостингов, типа мажордомо с петерхостом, как грязи.

Для этого попробуйте прописать в .htaccess по очереди такие строки:

AddDefaultCharset UTF-8
CharsetDisable On
CharsetDefault UTF-8
CharsetSourceEnc UTF-8
CharsetRecodeMultipartForms off

Учтите, что какие-то из них могут не сработать, а какие-то вызвать ошибку доступа (ERROR).

Еще информация о кодировках здесь: http://forum.maxsite.org/viewtopic.php?id=598

Ошибка «Cannot modify header information ….

Если у вас появляется сообщение об ошибке вида:

Warning: Cannot modify header information – headers already sent by (output started at…

то это означает, что вы неверно сохранили файл (имя файла указывается в первом Warning). На 99,99% вы сохранили файл в кодировке UTF-8 с сигнатурой (BOM).

Обратите внимание, что в логах ошибки присутствует полное её описание: имя файла и номер строчки. Например:

Warning: Cannot modify header information – headers already sent by (output started at /hosting/www/dbla-bla-bla/wp-config.php:1) in bla-bla-bla

Сие означает, что о ошибка в файле wp-config.php 1-й строке/символе. Поскольку сигнатура BOOM не видна обычными текстовыми редакторами, то можно выглядеть все глаза, но так и не увидеть этот «первый символ».

Ваши действия:

  • Скачиваем Notepad2: http://www.flos-freeware.ch/notepad2.html
  • Открываем файл в Notepad2.
  • Выбираем File – Encoding – UTF-8 (а не UTF-8 with signature!!!)
  • Жмем Save.
  • Загружаем файл на сервер.

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

Как красиво оформить картинку (фото)

Здесь только дам ссылку на специальный выпуск рассылки, посвященный оформлению картинок:

http://maxsite.org/ras17

Сделайте ваш блог красивым!

Начальные сведения по HTML (ссылки)

Дам несколько ссылок на свою рассылку, где вы найдете начальные сведения по HTML:

1. Начало – http://maxsite.org/ras05
2. Оформление текстов – http://maxsite.org/ras06
3. Фоны, блоки – http://maxsite.org/ras07
4. Картинки – http://maxsite.org/ras08

Вообще это один блок из нескольких выходов, поэтому читать можно последовательно 🙂

ВАЖНО! Прежде чем создать новую тему…

1. Когда вы создаете новую тему, убедитесь, что она еще не обсуждалась. Для этого вы можете пролистать форум (включая и раздел FAQ) или воспользоваться поиском.

2. Создавая новую тему, постарайтесь дать информативный заголовок. Не нужно писать «У меня проблема с плагином» – вместо этого напишите «Плагин ХХХ – не работает YYY». Такое описание позволит гораздо легче найти вашу тему будущим читателям форума.

3. В своем сообщении указывайте:

  • версию WordPress,
  • адрес сайта в виде неактивной ссылки,
  • укажите особо, если вы только тестируете сайт на localhost (денвер),
  • адреса на плагины или шаблон, на основе которого сделан ваш блог.

Эти данные помогут специалистам дать более точный ответ на ваш вопрос.

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

5. Первый признак того, что вы спамер – активная ссылка в вашем сообщении. Админы форума не будут разбираться, указываете ли вы ссылку с чистыми намерениями или пытаетесь прорекламировать свой сайт. Такие сообщения и темы будут удаляться целиком, автор получает бан.

6. За UP – бан.

7. За множественные темы – бан.

8. Нарушение общих правил – бан.

Писать модераторам с просьбой восстановить доступ беcсмысленно.

Прежде чем создать новую тему…

Этот форум мы используем только для готовых решений. Не нужно здесь задавать вопросы – сделайте это в соседнем форуме «WordPress».

ps Все внетемные темы будут удаляться без возможности восстановления. При повторах – автору вечный бан.

Оформление текстов и картинок с помощью HTML

К сожалению полный курс HTML потянет на отдельный сайт :), поэтому я просто приведу ссылки на два выпуска моей рассылки, где я привожу примеры работы с HTML. Рассчитаны они на новичков.

Основы HTML. Оформление текстов
Оформление текстов с помощью HTML

Оформление изображений

Создание анонса (more и noteaser)

Для того, чтобы разбить запись на две части, где первая будет отображаться только на главной станице (анонс, цитата), в тексте достаточно указать

<!--more-->

На главной странице будет отображен текст до этой конструкции.

Если вы хотите получить полный аналог поля «Цитата» (в админ-панели), то нужно указать:

<!--more-->
<!--noteaser-->

В этом случае на главной странице будет отображен текст до этой конструкции, а на странице записи его уже не будет.

http://maxsite.org/delenie-stranits-v-wordpresse

Деление страниц в WordPress’е

Для того, чтобы разбить запись на несколько страниц, в нужном месте текста достаточно указать:

<!--nextpage-->

Если после указания этого кода, WordPress не выводит ссылки на следующие части, то проверьте в шаблоне (index.php, single.php или page.php) наличие функции wp_link_pages(). Её нужно указать после the_content().

http://trampampam.ru/blog/other-pages/
http://maxsite.org/delenie-stranits-v-wordpresse

Как добавить счетчик, рекламу (или любой другой html-код)

Для этого вы можете использовать плагин «Ушки»: http://maxsite.org/novyiy-plagin-ushki

В нужном месте, например в footer.php или sidebar.php, нужно прописать код:

<?php 
if (function_exists('show_ushka')) show_ushka('counters');
?>

А в настройках создать ушку «counters» и добавить в неё свой html-код.

Вывод записей определенной рубрики в любом месте

Иногда нужно вывести записи вне основного цикла theeLoop. Обычно это делается с помощью query_posts. Проблема в том, что WordPress использует глобальные переменные, и после использования этой функции, условия query_posts станут глобальными.

Чтобы этого избежать, нужно использовать функцию get_posts. Например, мы хотим вывести в сайдбаре список последних записей в рубрике новости (id=1):

<h2 class="pages_search">Новости</h2>
<ul class="is_kat">
<?php
$posts_new = get_posts('category=1&numberposts=3');
foreach ($posts_new as $post_new) :
    echo '<li class="news_item"><a href="'; 
    echo get_permalink($post_new->ID);
    echo '">';
    echo mysql2date('j.m.Y',  $post_new->post_date); 
    echo ' - ';
    echo $post_new->post_title;
    echo '</a></li>';
endforeach;    
?>
</ul>

То есть мы получаем все записи с нужным нам условием get_posts(‘category=1&numberposts=3’) в объект $posts_new. Далее, мы просто обходим его в цикле и выводим нужные нам записи.

Поощрения активным участникам форума

В последнее время мне очень хочется, чтобы в сутках было ну хотя бы 25, а лучше 26, часов :). Иногда такая загрузка, что даже на форум не успеваю заглянуть. 🙁 Нужно быть благодарным тем, кто активно участвует в работе форума, и я решил сделать небольшой презент всем активным участникам.

За каждые 50 сообщений на форуме я вышлю ключ (= 1 url блога*) к своему блог-клиенту для WordPress (http://maxsite.org/wp-client).

Так что, если у вас уже более 50 сообщений, пишите мне на max-3000{!}list.ru. В письме укажите адрес блога. Я вышлю ключ, ссылки на скачивание и пароль архива.

(*Прим. WordPress 2.1.х программа пока не поддерживает)

ps Ну что делаем отдельный форум «FAQ по WordPress»?

Предлагайте темы для рассылки!

Если кто не знает, то я веду рассылку по WordPress. Тему выпуска я придумываю сам: иногда на форуме «подсмотрю» вопрос, иногда клиенты задают «задачки» :).

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

Тестовое сообщение

Пробуем новый форум

Anonymous
Отправить
Ответ на: