Форма обратной связи для WordPress, возвращаясь к напечатанному.

Или как я избавился от слишком назойливой опеки антиспама на сервере.

Не так давно поднимал вопрос о форме обратной связи для сайта на WordPress [Копия].

Некий анон хотел меня затроллить, но, как обычно, мало того, что написал полнейшую чепуху, которая не работает, так еще и случайно помог вскрыть баг (хотя, скорее опцию) почтового сервера, которая, правда, лично мне мешала.

Ситуация такая: антиспам финского сервера (вполне оправданно, кстати) отправляет в спам письма с доменов .ru (mail.ru и yandex.ru точно), .kz, .by и некоторых не связанных с ГОРФ, типа .tk

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

Находим в скрипте mail.php строчку:

$mes = "Имя: ".$name."\n\nТема: " .$sub."\n\nСообщение: ".$message."\n\n";

И меняем ее на:

$mes = "Имя: ".$name."\n\nТема: " .$sub."\n\nСообщение: ".$message."\n\n"."E-mail to answer: $email\n\n";

Ниже меняем в строке

$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");

$email на $address. Должно получиться:

$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$address");

Что этот код делает. Да все просто. Строка с сообщением ($mes) изменяется так, что адрес, который ввел пользователь в контактной форме, добавляется к тексту сообщения как простой текст. Параметры функции php mail изменяются так, что в заголовок письма вместо адреса пользователя, добавляется наш собственный адрес для приема сообщений из контактной формы. В результате мы получим сообщение, отправленное с нашего же адреса. Примерно как на скриншоте ниже:

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

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

Заметка в PDF

C#. Генерация строки из случайных символов.

Задача

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

Решение

Делается это довольно просто. Поручим формирование строки отдельной функции.
Во входных параметрах передадим ей строку, содержащую набор символов, из которых будет сформирована выходная случайная строка (параметр Alphabet) и длину генерируемой строки (параметр Length)

string GenRandomString(string Alphabet, int Length)
{
	...
}

Внутри функции.

//создаем объект Random, генерирующий случайные числа
Random rnd = new Random();
//объект StringBuilder с заранее заданным размером буфера под результирующую строку
StringBuilder sb = new StringBuilder(Length-1);
//переменную для хранения случайной позиции символа из строки Alphabet
int Position = 0;

Далее в цикле генерируем случайную строку:

for (int i = 0; i < Length; i++)
            {
                //получаем случайное число от 0 до последнего
                //символа в строке Alphabet
                Position = rnd.Next(0, Alphabet.Length-1);
                //добавляем выбранный символ в объект
                //StringBuilder
                sb.Append(Alphabet[Position]);                
            }

Возвращаем сгенерированную строку:

return sb.ToString();

Код функции на PasteBin

Пример использования функции

txtReturn.Text = GenRandomString("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", 10);

возвращает строку случайных символов длиной 10 знаков, состоящую из заглавных и строчных букв английского алфавита.

Немного об оптимизации

День метеоролога

История к недавно состоявшемуся дню метеоролога. Автор ███████, редактура моя.

Посвящается брату и маме.

На момент истории мне было лет 5-6, в школу я не ходил, а в садик я не пошел, потому что заболел. В детстве я вообще был болезненным ребенком, и любой простудифилис лип ко мне, как банный лист. Сестра, обычно остававшаяся со мной в таких случаях тоже заболела. И мама взяла меня на работу. На самом деле я был в восторге, ведь моя мама работала не скучной чиновницей в ОГА, не продавщицей в магазине, и даже не трактористкой в колхозе. Моя мама была Метеорологом. Именно так, с большой буквы М. Если вы никогда не были на метеостанции, напроситесь и посетите это место. Метеостанция — ужасно атмосферна. Непонятного назначения приборы возвышаются на рабочих столах, скрипят, пищат, тикают, выполняя свою такую нужную, но абсолютно непонятную «гражданскому» не посвященному в таинства метеорологии работу. В дальнем углу обязательно найдется ртутный столб, и тут он будет не метафорой, а всамделишней метровой колбой, заполненной ртутью. Загляните с разрешения метеоролога в ИВО, прибор, определяющий высоту облаков. Старые советские, но надежные его версии напоминают гибрид осциллографа и игрового автомата «морской бой». Резиновая туба обнимет ваше лицо, когда вы прижметесь к ней, и, вдохнув неповторимый запах нагретого, живого прибора, вы погрузитесь в небо, а невидимый луч будет вашим проводником. В другом углу мерно тикают барографы (суточные и недельные), под столом покоится радиометр, способный предупредить город о надвигающемся апокалипсисе.

Читать далее

Впервые опубликовано на Мракопедии

Более сложный способ мониторинга состояния сервера на Linux в реальном времени.

Продолжаю тему, начатую в предыдущей заметке [КОПИЯ]. В ней описывал получение данных от определенных скриптов и процессов запущенных на сервере под управлением Linux с помощью SSH, псевдотерминала и отдельного пользователя, создаваемого специально для целей мониторинга.

Будем посмотреть другой способ, с одной стороны, более сложный и требующий владения каким-нибудь языком программирования, кроме Bash-скриптов. Хотя, можно обойтись и исключительно одним Bash’ем, если клиент и сервер под Linux, или Bash прикрутили к Windows (cygwin(?), не пробовал, не знаю). А с другой стороны, наоборот, способ простой безопасный, требующий минимум вмешательства в настройки сервера.

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

Примечание: Термины «клиент» и «сервер» могут по ходу статьи быть неоднозначно истолкованными.
Серверное приложение будет наоборот, работать на «клиентском», «операторском» рабочем месте, а «сервер», в смысле компьютер с Linux, на котором я запускаю свои скрипты, и который управляет нужной мне железякой, станет вполне себе клиентом.
В общем, чтобы не вносить путаницы я условлюсь называть рабочее место оператора «локальным компьютером», а тот, который «сервер в привычном понимании» — «удаленным».

Задача

Такая же, как и в предыдущей заметке. Имеется удаленный компьютер под управлением Linux, рулящий системой контроля температуры и давления.
На самом деле, рулить он может чем угодно: от домашнего FTP с котиками или соединения с Интернетом, до управления СКД, открытием ворот, дверей, врат в Ад, личным концлагерем и т.д.
Суть в том, что нужно, чтобы удаленная система сигнализировала оператору об изменении своего состояния (изменении температуры, разрыва соединения с Интернетом, пришествии Сатаны). Оператор, как обычно, сидит под Windows (как в большинстве организаций в СНГ).

Некоторые соглашения

Для простоты условимся, что локальный и удаленный компьютер находятся в одной локальной сети (и одной подсети) 10.10.0.0/24, IP-адрес локального компьютера 10.10.0.30, прием данных производится через сетевой порт 11000 локального компьютера. Локальный и удаленный компьютеры обмениваются данными по протоколу TCP, данные представляют собой Unicode-строки.

Как это организовано на локальном и удаленном компьютере

Код

Сервера приема сообщений:
Смотреть на PasteBin
Скачать с Mega.nz

Скрипта отправки сообщений:
Смотреть на PasteBin
Скачать с Mega.nz

Источники

1. Клиент-серверное приложение на потоковом сокете TCP [Копия]
2. Как открыть TCP-/UDP-сокет средствами командной оболочки bash [Копия]

Видеоиллюстрация

Прямая ссылка

Простой способ мониторинга состояния сервера.

Введение

Понадобилось мониторить состояние сервера, точнее не всего сервера, а определенного демона, на сервере запускаемого. Понятно, что самым простым способом мониторинга чего-то работающего в фоне, является просмотр соответствующих логов. Но такой способ на самом деле дает весьма мало интерактивности, надо постоянно заходить по SSH, ковыряться в этих самых логах. Хочется, чтоб при изменении состояния, или же по определенной команде от определенного пользователя, сервер нам все рассказывал сам.
Хорошо, если демон умеет при изменении состояния запускать некие пользовательские скрипты. Так умеет, например, демон OpenVPN или, например, демон небольшой промышленной системы метеоконтроля, который я использовал в данном примере.
Вкратце, имеется плата на Arduino, обрабатывающая показания с нескольких датчиков и передающая их в удобоваримом формате через COM-порт демону, запущенному на сервере. Демон умеет исполнять пользовательские скрипты, но вот беда (та же беда и с OpenVPN), если в скрипте написать что-то типа echo "У нас изменились параметры, шеф, все пропало" это сообщение в лучшем случае уйдет неведомо куда. В худшем — вылезет пользователю, из под которого стартует демон, посреди рабочего сеанса в консоль.

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

Не так давно я делал похожего пользователя для отключения/перезагрузки сервера [КОПИЯ] . Фактически, пользователю была установлена псевдооболочка (на самом деле просто скрипт), выполняющий единственную команду перезагрузки/отключения системы. И идея создания псевдооболочек меня зацепила. Таким образом можно дать пользователю выполнять только ограниченный набор команд, да еще и обрабатывать параметры в скрипте по-своему, так что никакой злоумышленник, даже получив доступ по ssh ничего сделать не сможет, т.к. команды псевдооболочки ему неизвестны.

Почему бы не использовать такой способ и для целей мониторинга?

Создание пользователя

Первым делом создаем отдельную группу:
groupadd monusers
где monusers — любое название группы на ваш вкус, ранее в системе не существующее

Создаем пользователя:
useradd -g monusers -d /home/meteomon -s /home/meteomon/monitor.sh meteomon

где:
-g monusers группа пользователя (ранее созданная monusers)
-d /home/meteomon домашний каталог пользователя
-s /home/meteomon/monitor.sh — псевдооболочка для пользователя, скрипт, обрабатывающий команды.
meteomon — имя пользователя

Задаем пользователю пароль (иначе не сможем залогиниться по ssh):
passwd meteomon

Создаем домашний каталог:
mkdir /home/meteomon

Меняем владельца каталога на пользователя meteomon:
chown meteomon:monusers /home/meteomon

Меняем права доступа на каталог:
chmod 500 /home/meteomon

Создаем в домашнем каталоге скрипт monitor.sh о содержимом скрипта ниже.

Меняем владельца и права доступа для скрипта monitor.sh
chown meteomon:monusers /home/meteomon/monitor.sh
chmod 500 /home/meteomon/monitor.sh

Скрипт-псевдооболочка

Поскольку пользователь предполагается исключительно для мониторинга, разрешим ему всего одну команду — выход из системы. Соответственно, скрипт будет такой:

#!/bin/bash

echo "Hi, monitor operator"
echo "To exit enter byebye"

while [ "$KEYINPUT" != "byebye" ]; do
    read KEYINPUT
done

Все просто — ввод с клавиатуры попадает в переменную KEYINPUT и пока она не равна byebye скрипт выполняется. Как только пользователь введет byebye, так прервется цикл, скрипт завершит работу, и пользователь автоматически выйдет из системы.

Отправка сообщений пользователю

Для отправки сообщений пользователю используем связку команд echo и write
Можно создать отдельный скрипт со следующим содержимым:

#!/bin/bash

USERNAME="meteomon"

echo -e $1|write $USERNAME 2>/dev/null

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

Примечание: параметр -e команды echo позволяет использовать специальные символы, такие, как перенос строки \n, а конструкция 2>/dev/null отправляет в нуль-устройство сообщение об ошибке, которое может возникнуть, если пользователь meteomon не вошел в систему.

Использование

Осталось прописать соответствующую команду в пользовательском скрипте, вызываемом демоном, или исполняемом по cron’у:

...
DATA=`meteosrv checksystem`
/usr/sbin/techo $DATA
...

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

Настройка рабочего места оператора

Для Windows понадобится утилита plink, обычно она идет вместе с ssh-клиентом PuTTY. В каталоге с ней создаем bat-файл следующего содержания.

testmon.bat:
plink -ssh -P 22 -l meteomon -pw meteomonpass 192.168.0.40

где вместо meteomon надо подставить имя пользователя для мониторинга, вместо meteomonpass — заданный пароль, а вместо 192.168.0.40 настоящий адрес удаленного компьютера.

Вот что получилось

Источники

1. Bash, команда write

Форма обратной связи для WordPress, без плагина.

Пост из серии «кратенькая инструкция от склероза», описываю больше для себя, как форма сделана на моем сайте. Мопед не мой, но найти, откуда взята сия метода, не смог.

0. Создаем новую страницу, озаглавливаем ее согласно случаю, например Обратная связь, устанавливаем простое и понятное название постоянной ссылки, например contact-form, вставляем в редакторе в режиме Текст вот этот вот html-код. Не забудьте заменить beach на название директории с вашей темой. Пока ничего работать не будет, но «болванка» странички с формой обратной связи готова, осталось лишь научить сайт обрабатывать запрос, отправленный из формы.
1. Нам понадобится php-скрипт, отправляющий почту. Создаем файл mail.php, вставляем код, который откроется по ссылке, и копируем файл по FTP в директорию темы (wp-content/themes/ваша-тема).
В исходнике mail.php надо заменить admin-vnc@uaitc.fi на тот e-mail, на который вы хотите получать сообщения, отправленные из этой формы и указать в строке
header( 'Refresh: 3; url=http://tolik-punkoff.com/obratnaya-svyaz/' ); нужный адрес, куда пользователь будет перенаправлен после отправки сообщения. Число (в данном случае 3) — время перед перенаправлением. Фактически время, которое пользователю будет отображаться сообщение об успехе, либо об ошибке при отправке сообщения.
2. Сохраняем два изображения, valid.png:


и invalid.png:

в директорию images темы (wp-content/themes/ваша-тема/images).
3. Добавляем в файл style.css темы вот этот вот код css
4. Осталось проверить, все ли работает и добавить ссылку на страницу в соответствующее меню.

Вот что должно получиться

ФАНФАРЫ!

Все необходимое в одном архиве (на mega.nz)
Нашел оригинальный архив (скачать с mega.nz)

Про ментовские погадки.


В провинциях ГОРФ, оказывается, менты мелко серут в карман околополитическим активистам.
Не, это и так понятно, но тут настолько мелко, что мне даже смешно.
Пишет мне чел, анарх, хороший друг. Не так давно было. В общем, выходит он в интернеты (через VPN, естественно), а интернетов нету. И VPN’а тоже нету, он давай звонить провайдеру (есличо, мелкий местный провайдер, а не гигант типа Ростелекома), техподдержка отвечает, что мол все должно работать. И правда, пока звонил — связь восстановилась. Но VPN так и не поднялся. Парень личность уже пропаленная у всяких там центров «Э» и т.д., но найти на него ничего толком не могут, ибо шифруется хорошо. Ну, местные эшники может и знают, что вот это Вася Пупкин оставил коммент на форуме автономов, но фактически доказательств нет и в суд, даже такой хуевый суд, как в ГОРФ с этим говном не пойдешь.
Так вот, гады взяли и ему походу мелко напакостили. Я так понимаю, админ провайдера по звонку сверху просто перекрыл ему GRE, благо эта гадость делается одной командой. Договор с провайдером, естественно, зарегистрирован не на него, а на бабушку, у которой он квартиру снимает. И в данной ситуации разборки с провайдером ему нахуй не вперлись. Пришлось учить чела пользоваться OpenVPN. Заодно и сам разобрался, таки есть польза и от мелких пакостей.

Полезные плагины для WordPress

Akismet (идет в комплекте) — офигенная защита от спама. Достаточно только регнуться на их сайте (через конрсоль wp), получить ключик (бесплатный) и пользоваться. Из 400 спамерских комментариев проворонил 2. Классный результат.
BackUpWordPress — лучший плагин для бэкапа.
Better Tag Cloud — добавляет годное красивое облако тегов


Categories to Tags Converter Importer (официальный плагин WordPress) — конвертирует теги в категории и обратно.
Cyr to Lat enhanced — транслителирует ссылки образуемые WordPress’ом из названий статей.
Google Sitemap by BestWebSoft — делает XML-sitemap для Google
Jeba Limit Login Attempts — вспоминал этот плагин в маленькой заметке по безопасности. Плагин ограничивает количество попыток входа, если кто-то неправильно вводил пароли.
LJ and LJR users shortcodes (самописный) — вставляет ссылки на блоги ЖЖ и LJR с «головастиками» и т.д.
LJ-cut style cut — добавляет возможность использовать кат в стиле ЖЖ в блоге WordPress
LJR-pollDisplay — отображает опросы из LJR
Maintenance Mode — плагин для закрытия сайта на техобслуживание. В бесплатной версии доступны не все опции, но хватает.
Mobile Smart — добавляет возможность переключать тему для мобильных устройств (детектит устройства по идентификатору браузера и переключает тему), есть возможность переключать тему вручную, тему надо устанавливать отдельно.
raw-formatter — добавляет возможность отключать форматирование, автоматически добавляемое WordPress’ом в пост.
Shortcodes personal library — библиотечка с моими шорткодами. Дам только по личной просьбе. Упомянута от склероза и для бэкапа.
SI Captcha Anti-Spam — Хорошая капча на все (форма входа, восстановления пароля, регистрации, добавления комментария и пр.)
TinyBR — меняет местами комбинации Enter и Shift+Enter в визуальном редакторе. По-умолчанию в WP почему-то сделано добавление по Enter абзаца (<p></p>) вместо православного <br>
WordPress Importer (официальный) — позволяет импортировать контент из файла экспорта WordPress
WP Security Audit Log — ведет логи подозрительной активности на сайте. Бесплатная версия довольно сильно урезана.
WP User Avatar — отключает (нахрен!) дурацкий Gravatar и позволяет загружать свои аватарки.

Изменение логотипа в окне логина GDM

Спрашивают, как у нас сделан украинский флаг при входе на сервер. Да проще пареной репы, товарищи!

1. В любимом графическом редакторе готовим картинку. Должна быть PNG, разрешением 210×210 px и глубиной цвета 32 бита.
2. Идем в файл /usr/share/gdm/defaults.conf и ищем там параметр Logo= (секция [greeter]) и меняем путь на путь к своему файлу или заменяем сам файл.
Можно настроить приветствие:
Параметры
DefaultWelcome=false
DefaultRemoteWelcome=false

устанавливаем в false (иначе, ЕМНИС, будет использовано имя компьютера) и меняем параметры (вместо нашего названия подставьте свое):
Welcome=Welcome to UAITC
RemoteWelcome=Welcome to UAITC

Флаг (по клику можно скачать с mega.nz):

Права доступа и владельцы файлов в Linux.

Шпаргалка на стену студенту.




По клику доступны полноразмерные изображения

Скачать архив с копиями источников, файлами большого разрешения и svg.

По материалам:
1. http://downloads.naulinux.ru/pub/NauLinux/school_server/Docs/Docs/Nau/nau-server-sbs-ru/s1-navigating-ownership.html
2. http://www.k-max.name/linux/prava-dostupa-v-linux-eshhe-odna-malenkaya-shpargalka/

Аномальная квартира

На Мракопедии особо не оценили, пусть тут лежит, чтоб текст не пропал. Авторы те же, я и Панкарь:

Эх, страна моя родная, край загадок и чудес.
Где еще такое счастье, где еще такой прогресс!
Под одной огромной крышей, уфонафт, НЕХ, мелкий бес
А еще любитель крипи, SCP без них ██████!

Это аномальная, аномальная квартира,
Это аномальная, аномальная страна!

Полтергейст гремит посудой — собирается братва,
Вомпер цедит кровь с бокала,уфонафт жрет шаурма,
SCP мацу заводят, черти делают шашлык,
Мракопедию читает вслух любитель крипоты!

Это аномальная, аномальная квартира,
Это аномальная, аномальная страна!

Вечером концерт заводит наша дружная семья,
Полтергейст на барабанах, вомпер в трубы дует SKA
SCP вновь напросились, доверяем синт и бас,
Крипипастер на гитаре, а соседи на ушах!

Это аномальная, аномальная квартира,
Это аномальная, аномальная страна!

Червие

Написали с товарищем ████████ новый панковский текст, вдохновившись незабвенным Механиком и его Гнилым Господом.

Съежился последний мышиный окей,
Попрятались в норы крылатые слова,
Лебедь, Рак и Щука в едином порыве
Тянут в обрыв ледяную тележку!

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Парень висит на пустых обещаньях,
Элвис клюет сакральную Корсунь,
Дикая Охота заблудилась в Москве,
Мастер пропил труп Маргариты.

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Плачет в счетчике отключенный ток,
Закуталась в шубу нейтронная бомба,
Мыши возносят молитву веганам
Следуя по рельсам в скрытый Ультхар!

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Прямо в яблочко

Дональд едет, едет
Сквозь снежную равнину
Порошок целебный
Русским он везет
Русский все отринет,
Порошок тот примет,
И печаль отступит,
И тоска пройдет!
via [info]neilzrnpzdc_was@ljr

ЗЫ. Сегодня звонил и долго разговаривал с товарищем из ГОРФ, тот от нехуй делать смотрит раша-тв весь день, говорит, что судя по эфирам в ГОРФ 2 проблемы — Трамп и Джигурда, и что «Вашингтонский обком», походу, нихрена не шутка.
Как-то так.

Код, добавляющий тег rel canonical

Чтоб не потерять.
Автора оригинала не ведаю, но помню, что в оригинале был какой-то глюк, исправили. Вроде работает, и даже правильно. 🙂

Вставлять в начало файла functions.php шаблона темы.

На Pastebin
На Mega.nz

HTTP-редирект в WordPress.

Чуть не забыл, ко вчерашнему разговору с товарищем, который про это спрашивал. Ну я тебя, товарищ, немного надул, ибо не погуглил. Не надо никаких костылей с header ('Location: http://natribu.org'), если по каким-то причинам надо делать редирект со страниц WordPress, то есть стандартная функция

wp_redirect( $location, $status );
где:
$location — адрес, куда посылаем.
$status — код HTTP, статус перенаправления.

Подробности, например, тут [Копия]

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

Страница со списком тегов (или рубрик) WordPress

Если перейти в блоге WordPress по ссылке на любой тег, то попадем на страничку, содержащую анонсы постов по данному тегу, адрес странички будет примерно такой:

http://tolik-punkoff.com/tag/manuals/

Где manuals — собственно, выбранный тег, а tag — префикс для URL-адреса меток, который можно настроить в консоли WordPress в разделе Настройки — Постоянные ссылки.

Идея такого формата адреса достаточно очевидна, убираешь из строки адреса выбранный тег и попадаешь в список всех тегов, как например это сделано в ЖЖ или LJR

Вообще-то в профессиональной теме WordPress это дело должно бы работать из коробки, потому что вообще-то плохо, если раздел сайта, который логически существовать должен, не существует. И так думаю не я один, а как выяснилось из логов, и роботы. Правда это оказался робот какого-то мелкого поисковика, не Google или Яндекса, но все равно неприятно.
Так вот, если тема не сильно профессиональная, или разработчик забыл о такой мелочи, то посетитель сайта попадет по такой ссылке на страницу 404.

Исправляем досадную неприятность.

Читать далее…

Скачать заметку в формате PDF