Комментарии являются очень важным аспектом любого веб-сайта, так как это место, где читатели взаимодействуют с автором и между собой. В этой статье речь пойдет о WordPress сниппетах, хаках и рекомендациях по улучшению раздела комментариев в вашем блоге.
Позволяйте больше HTML-тегов в комментариях WordPress
По умолчанию, WordPress позволяет комментаторам использовать некоторые HTML-теги в текстовом поле комментариев. Но в зависимости от блога, можно разрешить использование большего количества тегов.
Для этого, просто вставьте приведенный ниже код в файл functions.php. Список разрешенных тегов может быть изменен в строке 4.
1
2
3
4
5
6
7
8
|
// Создать функцию, которая позволяет больше тегов в комментариях
function allow_pres() {
global $allowedtags;
$allowedtags['pre'] = array('class'=>array());
}
// Добавьте WordPress hook, чтобы использовать функцию
add_action('comment_post', 'allow_pres');
|
Удалите автоссылки в комментариях
Когда комментатор вставляет URL ссылку в комментарий, Вордпресс автоматически преобразует ее в гиперссылку. Это хорошо в большинстве случаев, но многие люди используют ваши комментарии на блоге для рекламы собственной продукции и услуг.
Удалить автоссылки в комментариях супер просто, вставьте код ниже в файл functions.php:
1
|
remove_filter('comment_text', 'make_clickable', 9);
|
Удалите URL-поле из WordPress формы для комментариев
Если вы не хотите, чтобы у ваших комментаторов была возможность ввести URL их веб-сайта, тогда вот сниппет, который удалит URL-поле из WordPress формы для комментариев.
Просто вставьте этот код в 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');
|
Добавление поля к комментариям
Только что мы вам показали, как удалять поле из комментирования, а что если вы хотите добавить новое поле в форме?! В следующем пример, мы добавим новое поле, чтобы у комментатора была возможность вписать свой возраст. Чтобы это сделать, скопируйте приведенный ниже код и вставьте его в 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 ); ?>
|
Вставляйте комментарии программно
В некоторых случаях, вам нужно вставлять комментарии программно. Сделать это очень легко. Просто выполните этот код, и он добавит новый комментарий в базу данных.
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_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);
|
Автоматическое отключение комментариев к постам старше чем “Х” дней
Если ваш блог популярен, вы, вероятно, получаете много комментариев, некоторые из них к очень старым постам… Так почему бы автоматически не отключить комментирование к публикациям старше, чем Х дней?
Вставьте приведенный ниже код в 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” ко всем ссылкам в тексте комментария
Использование HTML 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 файл и настройте его по своему желанию.
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; ?>
// Код разметки здесь, например функция comment_text();
}
|
После этого, используйте следующую строку кода в comments.php для отображения пользовательской разметки для комментариев:
1
|
<?php wp_list_comments("callback=my_custom_comments"); ?>
|
Запрет комментаторских feeds в отдельных сообщениях
По умолчанию, WordPress создает RSS-каналы для всех индивидуальных сообщений. Если вы не хотите или не нуждаетесь в них, вы можете отключить их с помощью следующего сниппета. Вставьте его в файл functions.php, и вы избавитесь от индивидуальных пост-фидов.
1
2
3
4
5
|
// отключение comment feeds для отдельных постов
function disablePostCommentsFeedLink($for_comments) {
return;
}
add_filter('post_comments_feed_link','disablePostCommentsFeedLink');
|