Lecactus

Обработка WORDPRESS-ом и вебсервером ошибки 404

Так случилось сегодня что поимел на своей шкуре невыносимую многочасовую нагрузку. Ссылку на один из постов опубликовали на местном очень посещаемом портале и хлынуло несколько сотен посетителей посмотреть(это не так страшно – страшнее что пришли скачать качалками (посмотрел по логам что большинство качали через ДМ)) видеоролик, расположенный на сервере. То что забили весь канал можно не писать – -это создавало только нагрузку на канал, но после того как удалил файлы с сервера чтобы перенести на внешние хранилища, то возникла огромная нагрузка. файла лежали в условной папке http://lecactus.ru/folder – и при отсутствии файлов в ней ошибка 404 генерировалась в ВП (а это довольно серьезная нагрузка на базу), т.к. страница 404 у меня "очень информативная" по части ссылок. Даже если выкосить из 404.php в папке темы все, сотавив голый текст "404", то файл все равно создавал меньшую но нагрузку на php+apache. Потом решил проблему кардинально (файлы на внешнку все равно вынес), но от нагрузки то надо было избавиться. в папке создал htaccess с плным редиректом на под-домен, где не стоит никаких движков. там ошибка 404 обрабатывалась уже как положено – тем что прописано в конфиге вебсервера, а именно отдавался файл 404.html nginx-ом и вообще не создавал никакой видимой нагрузки.

можно ли как то изменить обработку ошибки 404 в WP чтобы отдавал бы также файл 404.html , указанный в конфиге вебсервера? его без проблем можно создать и 1в1 в дизайне сайта просто сохранив страницу 404.php – она все равно практически выводит статичные данные.

Фантом

Сижу читаю мыло свежее и вижу такое:

В Вашем блоге зарегистрирован новый пользователь Lecactus Home:

Логин: q9f0nh5pctdvzmw

E-mail: leo.johnstone@googlemail.com

причем РЕГИСТРАЦИЯ В БЛОГЕ ОТКЛЮЧЕНА

wp-postratings + quoter – как снизить нагрузку

пока суть да дело с другой проблемой – http://mywordpress.ru/support/viewtopic.php?id=3869
попробовал ОТКЛЮЧИТЬ пару плагинов (quoter) и postratings:

http://lecactus.ru/2007/10/07/851/ (длинный пост + 178коментов)страница весит одинаково примерно в любых случаях, НО:
без плагинов – 42 запроса – время генерации 3-6секунд – грузится почти мгновенно (локально)
только с плагином quoter – 137 запросов – время генерации 6-8секунд (грузится дольше)
только с плагином postratings – 154 запроса – время генерации 10-20секунд (грузится долго и нагружает браузер)
с обоими активными плагинами – 247 запросов – время уже было озвучено выше – также от 10 до 20секунд (также тупит)

другие страницы, включая индексные также генерируются быстрее чем с этими двумя плагинами

что хотелось бы улучшить:
с плагином quoter впринципе справлюсь сам – тормозит насколько я заметил из-за выборки имен и дат сообщения, которое комментировали. если переписать плагин так чтобы он вставлял просто <blockquote> вместо "своих" тегов то думаю это уберет все лишние запросы, а вот как переделать postratings не придумал. Что то он лишнего хватает в базе, а что понять не могу

UPD первый вопрос снят – плагин quoter переделал, нужно только перелопатить коменты завтра и поисправлять кое что в них

theme switcher + supercache

Хочу повесить ЛАЙТ тему для посетителей с низкой скоростью, но так чтобы не было конфиликта с суперкэшем. Т.е. если посетитель выбрал тему одну то чтобы при переходе на другие страницы не было такого что одна страница грузится ему из суперкэша, а другая выглядит совсем по другому с другим оформлением.

это реально осуществить?

наблюдение за базой данных WP 2.3+

Мне так просто кажется или это фича: после обновления до 2.3 (и 2.3.1 тоже) заметил что база данных ВП сама стала "оптимизироваться" сама после удаления записей/ спама комментариев

кодировки-декодировки

Нужна помощь в "доработке напильником" плагина Search Unleashed

в целом все работает, но есть одна маленькая неприятность

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

если при поиске в яндексе переключить кодировку страницы на утф-8 и перейти на страницу блога по ссылке то слова подсвечены нормально. но после поиска настройка кодировке в яндексе снова меняется т.е. это не выход.

можно ли в плагине какой нибудь командой php определять кодировку УРЛ и автоматом переводить ее в утф8 ?

я применял такую строку для пробы
$referrer = iconv(‘utf-8’, ‘cp1251’, $referrer); – при этом в окне поисковых слов русские слова вообще пропадают а поиск из гугла косячится наоборот.

может кто помочь?

Вопрос к ГУРУ по отправке почты вордпрессом

Есть такой МЕГАБАГ у меня, уже не знаю что и делать. пока что просто забил на него за малой надобностью, но хочется разобраться:

Ситуация:
1 разрешаю я на блоге регистрироваться народу – им по идее должно прийти мыло с паролем. Так вот ему НИЧЕГО не приходит, а админу (мне) приходит мыло что такой то пользователь зарегистрировался…
2 пытаюсь восстановить пароль любого пользователя кроме себя (админа) – мне новый пароль приходит в почту сразу. любому пользователю даже с правами админа – ничего не приходит
3 сообщения о новых комментариях приходят мне на почту исправно
4 при регистрации блога пароль на мыло тоже приходит сразу
5 плагин уведомления о комментариях на мыло пришлось удалить т.к. он НИЧЕГО НЕ ОТПРАВЛЯЕТ даже мне.

В настройках php все прописано. но даже стандартной функцией mail() пытаюсь себе отправить любое мыло – ничего не приходит. как отправляет вордпресс админу – загадка…

если поможет инфо:
сервер работает на debian linux 4.0
установлен sendmail
в php.ini все вроде бы прописано
прописал даже smtp сервер провайдера в php.ini – толку ноль
при этом никаких ошибок не выдается. где копать?

вопрос к гуру по работе с русскими буквами в скриптах и ссылках

в новой версии 1.7 плагина "simpletagging" появилась панель массового изменения тегов, а в ней новая "фишка": справа появляется панель в виде английского алфавита и при клике по букве появляется список тегов на эту букву, которые можно вставить в нужную строку. С цифрами и английскими буквами проблем нет, но при попытке расширить словарь еще и русскими буквами при клике на русские буквы вылетает ошибка javascript и нажатия на остальные буквы не срабатывают до перезагрузки страницы.
функция вызывающая это действие такая:
[code- function generateTagsTab() {
global $wpdb;
$tags = $wpdb->get_col("SELECT DISTINCT tag_name FROM {$this->objClient->info[‘stptable’]} ORDER BY tag_name ASC");
//$alphabet = array(‘0-9′,’a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’,’l’,’m’,’n’,’o’,’p’,’q’,’r’,’s’,’t’,’u’,’v’,’w’,’x’,’y’,’z’,’А’,’Б’,’В’,’г’,’д’,’е’,’ж’,’з’,’и’,’й’,’к’,’л’,’м’,’н’,’о’,’п’,’р’,’с’,’т’,’у’,’ф’,’х’,’ц’,’ч’,’ш’,’щ’);
$alphabet = array(‘0-9′,’a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’,’l’,’m’,’n’,’o’,’p’,’q’,’r’,’s’,’t’,’u’,’v’,’w’,’x’,’y’,’z’);
foreach ( $alphabet as $letter ) {
$new_tags[$letter] = array();
}

if ( $tags ) {
foreach($tags as $tag) {
$index = substr( trim(strtolower($tag)), 0, 1 );
if ( ctype_digit($index) ) {
$new_tags[‘0-9’]
= $tag;
} else {
$new_tags[$index-
= $tag;
}
}
} else {
echo ‘<p>’.__(‘No tags yet.’, ‘simpletagging’).'</p>’;
return;
}
unset($tags);
?>
<div id="containertags">
<?php foreach ( $alphabet as $letter ) : ?>
<?php $nb_tag = count($new_tags[$letter]); ?>
<div id="letter-<?php echo $letter; ?>" <?php if ( $nb_tag == 0 ) echo ‘class="tabs-disabled"’; ?>>
<h2><?php echo strtoupper($letter); ?></h2>
<?php if ( $nb_tag > 0 ) : ?>
<ul class="tag_list">
<?php foreach ( $new_tags[$letter] as $tag ) : ?>
<li><a href="javascript:addTag(‘<?php echo $tag; ?>’)"><?php echo $tag; ?></a></li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<ul>
<li><?php _e(‘No tag for this letter yet.’, ‘simpletagging’); ?></li>
</ul>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
<?php
}[/code]
при нажатии на букву генерируется запрос вида

http://сайт/wp-admin/admin.php?page=simple-tagging_mass#letter-a

где в конце буква a это буква, на которую начинаются теги – т.е. выводится список. все там работает на аяксе.
возник вопрос – можно ли переделать эту функцию так чтобы выдавался просто список всех тегов без фильтрации по буквам, как на закладке "Управление тегами" – я пробовал просто скопировать запрос так как он был на вышеозначенной странице но не выводится ничего вообще. или забить на эту функцию вообще и оставить только английские символы?

WP-CRON и с чем его едят?

Пытаюсь наверное уже с неделю понять как работает wp-cron. Если точнее то вообще не понимаю КАК ЕГО настроить/запустить?
даже отдельный одноименный плагин ставил (который правда для версий до 2.1), хотя вроде бы в новой версии он уже встроен. так и не нашел ничего вообще.:(

Плагин Wp-postratings v1.20(beta). Русская версия

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

2. Добавили возможность голосования не только В ПЛЮС, но и В МИНУС. А именно: теперь можно назначать каждой “звезде” ЛЮБЫЕ значения, хоть -100, хоть +1000

3. Также появился второй вариант голосования – выставление только ПЛЮСОВ и МИНУСОВ

4. Появился шаблон для вывода, если включен режим голосования “только для зарегистрированных пользователей”

5. Добавили в дистрибутив побольше готовых тем оформления

6. Сделали отдельную страницу для деинсталляции (старое место для деинсталляции осталось также).

Рассмотрим подробнее.

Главное нововведение

Появилась возможность создавать рейтинги только из ПЛЮСОВ и МИНУСОВ.

Рассмотрим структуру файлов темы оформления рейтингов. Проще говоря, если посмотреть на содержимое папки плагина, то там есть папка images. В ней находятся варианты оформления и имя каждой папки соответствует теме. Так чем же отличаются темы старого и нового стиля голосований:

в обычной теме присутствуют файлы картинок:

rating_start.gif (не в каждой теме) – начало полосы

rating_over.gif – при наведении мыши

rating_on.gif – голос есть

rating_off.gif – голоса нет

rating_half.gif – половина голоса

rating_end.gif (не в каждой теме) – конец полосы

а в теме, где только ПЛЮСЫ и МИНУСЫКАРТИНКИ ДЛЯ МИНУСОВ КАРТИНКИ ДЛЯ ПЛЮСОВ
rating_1_over.gif – при наведении мышиrating_1_on.gif – голос естьrating_1_off.gif – голоса нетrating_1_half.gif – половина голоса rating_2_over.gif – при наведении мышиrating_2_on.gif – голос естьrating_2_off.gif – голоса нетrating_2_half.gif – половина голоса

Собственно, если мы хотим создать новую тему на основе уже готовых картинок(например создать тему стандартных голосов из плюсов-минусов), то просто создаем новую папку и копируем например только плюсовые картинки и приводим их название в соответствии с форматом для обычного голосования. При необходимости можно доработать картинки(например сделать правильный показ половины голоса) в графическом редакторе. Что я и сделал.

Установка плагина
Распакуйте файлы и скопируйте папку postratings в папку плагинов /wp-content/plugins
Зайдите в панель администрирования, перейдите в раздел Плагины и щелкните ‘Активировать’.
Перейдите в меню настроек ‘Настройки рейтингов’ в разделе ‘Рейтинги’ и установите ваши предпочтения.

Обновление с предыдущей версии

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

WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

Для исправления ошибки деактивируйте и активируйте плагин заново!

Интегрирование в тему
Откройте

wp-content/themes/<ИМЯ ВАШЕЙ ТЕМЫ>/index.php

Вы должны поместить код также в

single.php, post.php или page.php.
Найдите: <?php while (have_posts()) : the_post(); ?>
Добавьте в требуемом месте

<?php if(function_exists(’the_ratings’)) { the_ratings(); } ?>
Если вы НЕ ХОТИТЕ добавлять рейтинги в каждую запись, НЕ ИСПОЛЬЗУЙТЕ код приведенный выше. Просто введите

[ ratings ] (без проблелов)

в содержимое выбранной записи и это встроит рейтинги только в эту запись.

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

Примечание

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

Поясню – нажатие первой кнопки только позволяет переключить тему и задать настройки (название звезд и значения) . Поэтому после внесения изменений требуется еще нажать вторую кнопку.

Скачать оригинальную и русскую версию можно у меня

Как сделать меню навигации по подстраницам?

переделываю сайт. переношу с одного старого самописного внутри компании движка на WP.

пример страницы тут: http://intra.cf1.ru/about/cat.html?item=1844

нужно сделать аналогиное меню перехода на вышестоящую страницу как в строке

 Знакомьтесь F1 -> ОБЩАЯ ИНФОРМАЦИЯ -> РЕЖИМ РАБОТЫ

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

Не работает поиск

Завел у себя еще пару доменов на сервере и поставил там WP 2.2.1
Так вот, там не работает вообще поиск по русским символам 🙁
кусок страницы phpmyadmin нового блога

wp_categories                             5    MyISAM    utf8_general_ci    5.3 КБ    -
    wp_comments                             1    MyISAM    utf8_general_ci    4.2 КБ    56 Байт 
    wp_download_count                             0    MyISAM    utf8_general_ci    1.0 КБ    -
    wp_link2cat                             7    MyISAM    utf8_general_ci    3.2 КБ    -
    wp_links                             0    MyISAM    utf8_general_ci    4.6 КБ    584 Байт 
    wp_options                             112    MyISAM    utf8_general_ci    585.5 КБ    32.7 КБ 
    wp_post2cat                             9    MyISAM    utf8_general_ci    3.2 КБ    -
    wp_postmeta                             13    MyISAM    utf8_general_ci    7.6 КБ    -
    wp_posts                             9    MyISAM    utf8_general_ci

на прежних двух блогах (которые пережили уже смену сервера, а также перенос базы по версиям Mysql 3.x, 4.x,5.x) все работает и там кодировки в базе такие (кусок страницы):

ivan_categories                             18    MyISAM    latin1_swedish_ci    4.1 КБ    -
    ivan_comments                             933    MyISAM    latin1_swedish_ci    362.7 КБ    500 Байт 
    ivan_dailytopten                             4    MyISAM    latin1_swedish_ci    2.1 КБ    -
    ivan_dailytoptenall                             4    MyISAM    latin1_swedish_ci    2.0 КБ    -
    ivan_download_count                             9    MyISAM    utf8_general_ci    3.3 КБ    -
    ivan_fim_cat                             1    MyISAM    latin1_swedish_ci    2.1 КБ    -
    ivan_fim_comments                             0    MyISAM    latin1_swedish_ci    1.0 КБ    -
    ivan_fim_images                             3    MyISAM    latin1_swedish_ci    2.2 КБ    -
    ivan_link2cat                             18    MyISAM    latin1_swedish_ci    3.4 КБ    -
    ivan_links                             18    MyISAM    latin1_swedish_ci    6.2 КБ    -
    ivan_options                             239    MyISAM    latin1_swedish_ci    476.7 КБ    32.1 КБ 
    ivan_post2cat                             469    MyISAM    latin1_swedish_ci    32.5 КБ    -
    ivan_postmeta                             2,192    MyISAM    latin1_swedish_ci    241.7 КБ    -
    ivan_posts                             349    MyISAM    latin1_swedish_ci    440.3 КБ    -
    ivan_ratings                             60    MyISAM    latin1_swedish_ci    8.8 КБ    -

MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: utf8_general_ci
Версия сервера: 5.0.32
Версия протокола: 10
Версия MySQL-клиента: 5.0.32
Использованы расширения PHP: mysql

и еще в новых инсталляциях используются строки в wp-config.php
define(‘DB_CHARSET’, ‘utf8’);
define(‘DB_COLLATE’, ”);
define (‘WPLANG’, ‘ru_RU’);
а в старых блогах такого нет, и когда я попробовал прописать такое в старых блогах, то там все стало кракозябрами

Плагин “Search Meter”

Русифицированный плагин Search Meter (Поисковый Счетчик) версия 2.2
Проверена работа с WP 2.2.1
Домашняя страница плагина http://www.thunderguy.com/semicolon/wordpress/search-meter-wordpress-plugin/
Страница с описанием на русском http://lecactus.ru/blog/2007/07/19/550/
Скачать оригинал http://semi-wp-plugins.svn.sourceforge.net/viewvc/*checkout*/semi-wp-plugins/search-meter/branches/current/search-meter.php
Скачать русскую версию http://lecactus.ru/blog/download-manager.php?id=8

Порядок установки

1. Скопируйте этот файл в папку plugins вашей инсталляции WordPress (wp-content/plugins).
2. Войдите в панель администрирования WordPress. Перейдите на страницу плагинов и активируйте этот плагин.

Чтобы просмотреть статистику поиска, войдите в панель администрирования WordPress, перейдите на страницу Доска Объявлений и кликните Поисковый Счетчик.
Чтобы управлять статистикой поиска, войдите в панель администрирования WordPress, перейдите на страницу Настройки и кликните Поисковый Счетчик.

ТЕГИ ШАБЛОНА

sm_list_popular_searches()

Показывает список пяти самых популярных выполненных запросов
на вашем сайте за последние 30 дней. Читатели могут кликать по
поисковым фразам чтобы повторить поиск.

sm_list_popular_searches(’<li><h2>Популярные поисковые запросы</h2>’, ‘</li>’)

Показать список, как указано выше, с заголовком  “Популярные поисковые запросы”.
Если не было поисков, тогда этот тег ничего не отобразит. Эта форма
тега должна быть использована по умолчанию в теме WordPress. Вставьте это в файл sidebar.php .

sm_list_popular_searches(’<li><h2>Популярные поисковые запросы</h2>’, ‘</li>’, 10)

Тоже самое что и выше, но так отобразится 10 самых популярных поисковых запросов

sm_list_recent_searches()

Показывает список пяти самых последних выполненных запросов
на вашем сайте. Читатели могут кликать по
поисковым фразам чтобы повторить поиск.
Этот тег имеет такие же опции как и sm_list_popular_searches().
PS чтобы теги в шаблоне заработали их нужно помещать в блоке <?php ?> , например так: <?php sm_list_popular_searches(); ?>

PPS при копировании тегов проверяйте правильность кавычек (лучше заменить их все вручную)

облако тегов в сайдбаре (полное/частичное)

а можно ли сделать так чтобы в сайдбаре выводилось по умолчанию краткое облако, а при нажатии на ВСЕ ТЕГИ появлялись все(или также выборочно менять их количество) там же в сайдбаре, а не в отдельном листе (или например через параметры облака simpletagging – там можно задавать опции)?
примерно как сделано тут http://memori.ru/all/

Права пользователей.

Имеется блог (мой, что указан в профайле). Пишу там в основном я(администратор)) и еще один человек(автор).
Вопрос следующий:
можно ли сделать расширенный настройки прав что можно делать АВТОРУ а что нельзя. например с правами Автор невозможно постить из блог клиента записи с вложениями(например картинками, приходится заводить еще аккаунт на фтп), но под РЕДАКТОРОМ это работает. и еще есть несколько плагинов, например Wordtube или Цитаты которые вообще недоступны ни под кем кроме администратора. Например в wordtube невозможно закачивать файлы, но кнопка вставки закачанных файлов в запись работает и т.п.

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