Разрешатель

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

Естественно, это принесло новую проблему — а что делать с постами, к которым не хочешь закрывать комментарии, даже если пройдет сто-тыщь-миллионов лет? Конечно, таких актуальных тем немного — котятки, да сиськи, — но кому-то это ведь важно, да? Меня вот всегда бесило автозакрывание комментариев у Бирмана только начнется самое интересное. Да и Роман Настенко тут жалуется.

В общем, по-быстрому накатал еще один маленький хак под этот странный движок, плагин «Разрешатель».

Теперь, если какому-то посту добавить произвольное поле с названием «allow_comments» и любым непустым значением, комментарии — о, чудо! — останутся открытыми.


При этом, заметьте, простое убирание проверок в шаблоне бы ничего не дало, как и подключение через function.php, т.к. защита от дурака двухуровневая — и в wp-comments-post.php.

Также пришлось учесть, что в разных шаблонах могут использоваться разные подходы к проверке — либо ('open' == $post->comment_status), либо comments_open($post->ID) (второй, конечно, правильнее). Но все работает и без изменений в шаблоне.

Впрочем, вы напишите, если плагин не так как-то будет работать, да?

Слушайте, раз так — может, у вас есть собственное недовольство какими-то мелкими особенностями движка? Делитесь! На большое что-то время не найду, а маленькое — всегда пожалуйста.

{20 комментариев} Подписка на комментарии

О, спасибо, попробую :)

Мое недовольство мелким недостатком движка: мне не нравится то, что есть: iskariot.ru/category/process/

и есть iskariot.ru/process/. Хотелось бы избавится от этого лишнего /category/

lilumi, просто, в настройках укажи вместо «/category» «/...» или как-то так — я у себя так сделал и отлично работает.

@lilumi: да, спасибо. Я все забываю похачить свой ВП — там надо, на самом деле, надо подепить хуком некоторые функции, выводящие категории и убирать лишнюю папку.

Роман не прав, т.к. если оставить "/" или "", то такие ссылки будут оставаться (по крайней мере, в 2.6).

В зависимости от ЧПУ, будет по-разному. Но для /%category%/%postname%/ все просто — можно не мучиться плагинами, а добавить в functions.php следующее:

add_filter('category_link', 'RemovePermaCategory', 99);
function RemovePermaCategory($text){
 return str_replace('category/','',$text);
}

По идее, этого хватит, так как все связанные функции для построения ссылки используют get_category_link (). И без /category/ ссылка все же будет спокойно работать.

Хотя, может быть, есть решение проще, или в 2.7 проблему действительно пофиксили.

Ага, посмотрел. Правильно писать просто «.». Работает, и раньше, чем в версии 2.7.

О, спасибо, вот и простое решение.

Ээээ, там же вроде можно убрать галочку с опции: «Автоматически отключать комментирование для записей старше ХХ дней». Зачем хаки?

Эээээ, но тогда можно будет комментировать все записи старше XX дней???

Сейчас заливая на wordpress.org/extend/plugins/allowcomments/ обнаружил маленький косяк в плагине, так что обновил версию. Доступна и по старой ссылке, и на официальном сервере ВП.

@Роман Настенко: попробовал с просто точкой «.» — не работает. ссылки действительно такими становятся, но при открытии — 404

@lilumi: я себе на 2.6 поставил, работает, как ни странно. Попробуй поставить сначала другой шаблон (любой, или «/»), потом обнови.

Если не работает, хук, написанный вверху, тоже не поможет.

да на 2.6.3. проверил — работает, а на 2.7 — нет. обидно, досадно. Может еще какие-то варианты есть?

Не вижу ничего страшного в некропостерах...

Если это не спам, то на здоровье — мало ли какое политическое событие пятилетней давности неожиданно могло всколыхнуть сознательного гражданина %)

@lilumi: так у меня в 2.7 на локалхосте работает. Ты сбрасывал настройки пермалинков? Можно еще попробовать залезть в rewrite.php и на 1008 строке

$this->category_structure = trailingslashit( $this->front . 'category' );

заменить на

$this->category_structure = trailingslashit( $this->front );

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

Прекращайте засорять эфир :-)

Всё уже давно разложено по полочкам.

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

То бишь иерархическую схему — одна категория внутри другой. Нужно лезть в нагромождение хлама в RewriteRules. А там экстрим :-)

Если короче то:

URL подкатегорий вида /category1/category2/categoryn без /category/ (или какие вы там символы ввели в админке WP) не работают.

Одномерные, не вложенные работают.

Интересный плагин, а можно использовать ваш код для написания своего плагина под flatpress?

@Styler: если он подойдет, то — почему бы и нет.

А я вообще не закрываю комментарии — большинство постов на «вечные» темы. :D Хотя, может просто потому, что мой блог слишком молод еще. Вот будет годик- посмотрю стоит или нет :)

Обновил плагин. Теперь разрешать комментарии к посту навсегда можно не только устанавливая вручную кастомфилд, но и просто щелкая по соответствующему чекбоксу (там новая панелька появляется в форме создания/редактирования поста).

Обратная совместимость есть, со старыми постами ничего не случится.

А здесь можно оставить свое мнение ↓ Подписка на комментарии
какие-то из следующих трех полей можно оставить пустыми


нет тегам!!! **эмоция**, __ирония__, >цитата, {[код]}