Блок комментариев является очень важным аспектом любого блога, потому что это единственная возможность обратной связи с читателем.
Поэтому сегодня мы разберем немного сниппетов, хаков и трюков, позволяющих немного улучшить этот блок. Поехали...
Разрешение дополнительных HTML тэгов в комментариях WordPress
По умолчанию, WordPress позволяет комментаторам использовать весьма ограниченный список HTML тэгов. Но вы можете расширить или сузить этот список.
Для этого, просто скопируйте код, расположенный ниже, в файл functions.php
. Список тэгов правится в 4 линии.
1 2 3 4 5 6 7 8 |
// Create function which allows more tags within comments function allow_pres() { global $allowedtags; $allowedtags['pre'] = array('class'=>array()); } // Add WordPress hook to use the function add_action('comment_post', 'allow_pres'); |
Источник:
Удаление автоссылок в комментариях
Когда комментатор вставляет в свое сообщение url
ссылку, WordPress автоматически трансформирует ее в гипертекстовую ссылку. В большинстве случаев это очень хорошо, но плохо, если люди пытаются рекламировать свои продукты или услуги.
Удаление автоссылок в комментариях производится очень просто, достаточно вставить следующий код в файл functions.php
.
1 |
remove_filter('comment_text', 'make_clickable', 9); |
Источник:
Удаление поля url с формы отправки комментария
Если вы не хотите, чтобы ваши комментаторы оставляли ссылки на свои сайты, тогда вам пригодится следующий хак.
Вставляем код в файл functions.php
вашей темы.
1 2 3 4 5 |
function remove_comment_fields($fields) { unset($fields['url']); return $fields; } add_filter('comment_form_default_fields','remove_comment_fields'); |
Источник: http://wp.tutsplus.com/tutorials/creative-coding/customizing-comments…
Добавление дополнительных полей в форму отправки комментария
Вы только что узнали, как удалить поле, теперь разберемся, как вставить дополнительное. Например, остановимся на поле возраста.
Для этого, нужно добавить следующие строки в functions.php
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function add_comment_fields($fields) { $fields['age'] = '<p class="comment-form-age"><label for="age">' . __( 'Age' ) . '</label>' . '<input id="age" name="age" type="text" size="30" /></p>'; return $fields; } add_filter('comment_form_default_fields','add_comment_fields'); function add_comment_meta_values($comment_id) { if(isset($_POST['age'])) { $age = wp_filter_nohtml_kses($_POST['age']); add_comment_meta($comment_id, 'age', $age, false); } } add_action ('comment_post', 'add_comment_meta_values', 1); |
А теперь, отобразим возраст комментатора с помощью следующего кода:
1 |
<?php echo "Comment authors age: ".get_comment_meta( $comment->comment_ID, 'age', true ); ?> |
Источник: http://wp.tutsplus.com/tutorials/creative-coding/customizing-comments…
Программная вставка комментариев
В исключительных случаях вам понадобится программная вставка комментариев. Далее идет частный пример вставки одного комментария.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$data = array( 'comment_post_ID' => 1, 'comment_author' => 'admin', 'comment_author_email' => 'admin@admin.com', 'comment_author_url' => 'http://www.catswhocode.com', 'comment_content' => 'Lorem ipsum dolor sit amet...', 'comment_author_IP' => '127.0.0.1', 'comment_agent' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; fr; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3', 'comment_date' => date('Y-m-d H:i:s'), 'comment_date_gmt' => date('Y-m-d H:i:s'), 'comment_approved' => 1, ); $comment_id = wp_insert_comment($data); |
Источник:
Автоматическое отключение комментариев к постам, которые старше X дней
Если ваш блог достаточно популярный, и вы каждый день получаете очень много комментариев, то можете отключить комментирование для постов, возраст которых старше X дней.
Добавьте нижеследующий код в файл functions.php
. Этот код отключит комментирование постов старше 30 дней. Количество дней правится в строке 3.
1 2 3 4 5 6 7 8 9 |
function close_comments( $posts ) { if ( !is_single() ) { return $posts; } if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( 30 * 24 * 60 * 60 ) ) { $posts[0]->comment_status = 'closed'; $posts[0]->ping_status = 'closed'; } return $posts; } add_filter( 'the_posts', 'close_comments' ); |
Источник:
Добавление атрибута target=”blank” ко всем ссылкам в теле сообщения
Бывают случаи, когда нужно добавить к ссылкам в теле сообщения какой-либо атрибут. В нашем примере, это будет target="blank"
. Для этого поправим functions.php
.
1 2 3 4 5 |
function autoblank($text) { $return = str_replace('<a', '<a target="_blank"', $text); return $return; } add_filter('comment_text', 'autoblank'); |
Источник:
Настройка разметки комментариев
По умолчанию, WordPress выводит стандартный список комментариев, но разметку этого списка можно изменить по своему вкусу. Обновляем functions.php
и прописываем стили в style.css
.
1 2 3 4 5 6 7 8 9 10 |
function my_custom_comments($comment, $args, $depth) { $GLOBALS['comment'] = $comment; ?> <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>"> <?php if ($comment->comment_approved == '0') : ?> <em><?php _e('Your comment is awaiting moderation.') ?></em> <?php endif; ?> // Comments markup code here, e.g. functions like comment_text(); } |
После нужно вставить в comments.php
следующий код:
1 |
<?php wp_list_comments("callback=my_custom_comments"); ?> |
Источник:
Отключение подписки на комментарии для определенных постов
По умолчанию, WordPress создает RSS каналы для всех постов. Если вам для определенного поста канал не нужен, то вы можете его отключить следующим образом. Обновляем functions.php
. В данном примере отключаем канал подписки для поста с id=39
.
1 2 3 4 |
function disablePostCommentsFeedLink($for_comments) { return; } add_filter('post_comments_feed_link','disablePostCommentsFeedLink'); |
Источник:
Если вам понравились эти трюки, то вы можете оставить в комментариях ваши пожелания по добавлению новых.