Статьи

Расширьте раздел комментариев WordPress

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

Разрешить больше HTML-тегов в комментариях WordPress

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

Для этого просто вставьте приведенный ниже код в ваш functions.phpфайл. Список разрешенных тегов можно изменить в строке 4.

// 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');

»Источник: http://davidwalsh.name/wordpress-comment-tags

Удалить автолинки в комментариях

Когда комментатор вставляет URL-ссылку в форму комментария, WordPress автоматически преобразует ее в гипертекстовую ссылку. Это хорошо в большинстве случаев, но лично мне это не нравится, так как многие люди использовали мои комментарии в блогах для рекламы своих собственных продуктов и услуг.

Удалить автолинки в комментариях очень просто: просто вставьте строку кода ниже в ваш functions.phpфайл.

remove_filter('comment_text', 'make_clickable', 9);

»Источник: http://www.wprecipes.com/wordpress-hack-remove-autolinks-in-comments

Удалите поле URL из формы комментариев WordPress

Если вы не хотите, чтобы ваши комментаторы могли вводить URL своего веб-сайта, вот фрагмент, чтобы удалить поле URL из формы комментариев WordPress.

Просто вставьте приведенный ниже код в свой functions.phpфайл, сохраните его, и все готово.

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файл:

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);

Теперь, чтобы отобразить возраст комментатора, используйте следующий код:

<?php echo "Comment authors age: ".get_comment_meta( $comment->comment_ID, 'age', true ); ?>

»Источник: http://wp.tutsplus.com/tutorials/creative-coding/customizing-comments…

Вставьте комментарии программно

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

$data = array(
	'comment_post_ID' => 1,
	'comment_author' => 'admin',
	'comment_author_email' => '[email protected]',
	'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);

»Источник: http://www.wprecipes.com/wordpress-hack-insert-comments-programatics

Автоматически отключать комментирование постов старше X дней

Если ваш блог очень популярен, вы, вероятно, получите много комментариев, некоторые из которых относятся к очень старым сообщениям … Так почему бы не отключить автоматическое комментирование сообщений старше X дней?

Вставьте приведенный ниже код в ваш functions.phpфайл. Код отключит комментарии к посту старше 30 дней. Количество дней можно изменить в строке 3.

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' ); 

»Источник: http://perishablepress.com/wordpress-tip-disable-comments-in-old-posts-via-php/

Добавить target = ”blank” ко всем ссылкам в тексте комментария

Использование target="blank"атрибута HTML, как правило, не рекомендуется, так как это приводит к открытию ссылки в новой вкладке или окне, но я знаю, что это нравится клиентам. Поэтому, если вам нужно добавить target="blank"атрибут к каждой ссылке в тексте комментариев, просто вставьте код, показанный ниже, в свой, functions.phpи вы получите работу.

function autoblank($text) {
	$return = str_replace('<a', '<a target="_blank"', $text);
	return $return;
}
add_filter('comment_text', 'autoblank');

»Источник: http://www.catswhocode.com/blog/snippets/add-target_blank-on-all-link

Настройте разметку комментариев

По умолчанию WordPress выводит стандартный список комментариев, но при необходимости может быть настроен. Вставьте следующий код в ваш functions.phpфайл и настройте его по желанию.

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для отображения вашей пользовательской разметки комментариев:

<?php wp_list_comments("callback=my_custom_comments"); ?>

»Источник: http://css-tricks.com/snippets/wordpress/customize-comments-markup/

Отключить каналы комментариев в отдельных сообщениях

По умолчанию WordPress создает RSS-каналы для всех отдельных сообщений. Если вы не хотите или не нуждаетесь в них, вы можете отключить их с помощью следующего фрагмента кода. Просто вставьте его в свой functions.phpфайл, и вы избавитесь от отдельных постов.

// disable comment feeds for individual posts
function disablePostCommentsFeedLink($for_comments) {
	return;
}
add_filter('post_comments_feed_link','disablePostCommentsFeedLink');

»Источник: http://digwp.com/2009/11/disable-comment-feeds-individual-posts/