• Коллеги.

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

    Когда пишу такой же второй комментарий выводится сообщение:

    Дубликат комментария удалён. Кажется, вы уже сказали это!

    Как отключить эту проверку. Спасибо за помощь!
    Сам всё перерыл не понял где это отключается.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Без правки файла wp-includes\comment.php, по-моему, не обойтись. Но в этом случае изменения потеряются при обновлении версии.

    Начиная со строки 607 есть код:

    // Simple duplicate check
    // expected_slashed ($comment_post_ID, $comment_author, $comment_author_email, $comment_content)
    $dupe = "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = '$comment_post_ID' AND comment_approved != 'trash' AND ( comment_author = '$comment_author' ";
    if ( $comment_author_email )
        $dupe .= "OR comment_author_email = '$comment_author_email' ";
    $dupe .= ") AND comment_content = '$comment_content' LIMIT 1";
    if ( $wpdb->get_var($dupe) ) {
        do_action( 'comment_duplicate_trigger', $commentdata );
        if ( defined('DOING_AJAX') )
            die( __('Duplicate comment detected; it looks as though you’ve already said that!') );
    
        wp_die( __('Duplicate comment detected; it looks as though you’ve already said that!') );
    }

    Вот его нужно закоментировать. Чтобы было так:

    // Simple duplicate check
    // expected_slashed ($comment_post_ID, $comment_author, $comment_author_email, $comment_content)
    //$dupe = "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = '$comment_post_ID' AND comment_approved != 'trash' AND ( comment_author = '$comment_author' ";
    //if ( $comment_author_email )
    //    $dupe .= "OR comment_author_email = '$comment_author_email' ";
    //$dupe .= ") AND comment_content = '$comment_content' LIMIT 1";
    //if ( $wpdb->get_var($dupe) ) {
    //    do_action( 'comment_duplicate_trigger', $commentdata );
    //    if ( defined('DOING_AJAX') )
    //        die( __('Duplicate comment detected; it looks as though you’ve already said that!') );
    //
    //    wp_die( __('Duplicate comment detected; it looks as though you’ve already said that!') );
    //}

    Сейчас проверю.
    Спасибо!

    Что-то я не подумал сразу, что если закомменитровать так, то и все юзеры смогут оставлять одинаковые коменты. Если нужно только для админа это выключить, то можно что-то типа такого написить:

    // Simple duplicate check
    // expected_slashed ($comment_post_ID, $comment_author, $comment_author_email, $comment_content)
    if ($comment_author_email != '{ваш_email}') {
        $dupe = "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = '$comment_post_ID' AND comment_approved != 'trash' AND ( comment_author = '$comment_author' ";
        if ( $comment_author_email )
            $dupe .= "OR comment_author_email = '$comment_author_email' ";
        $dupe .= ") AND comment_content = '$comment_content' LIMIT 1";
        if ( $wpdb->get_var($dupe) ) {
            do_action( 'comment_duplicate_trigger', $commentdata );
            if ( defined('DOING_AJAX') )
                die( __('Duplicate comment detected; it looks as though you’ve already said that!') );
    
            wp_die( __('Duplicate comment detected; it looks as though you’ve already said that!') );
        }
    }

    где вместо {ваш_email} вставить email админа.
    Можно, конечно, получать мыло скриптом, но лень писать это 🙂

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Без правки файла wp-includes\comment.php, по-моему, не обойтись.

    Вполне можно обойтись — например, изменив запрос на поиск дубликатов с помощью фрагмента в functions.php активной темы:

    function remove_duplicate_comment_check($query) {
    	global $wpdb, $user_level;
    
    	if ( 10 == $user_level )
    		$query = preg_replace(
    			"/(SELECT comment_ID FROM $wpdb->comments WHERE .* comment_content = '.*') LIMIT 1/",
    			"$1 AND 0 = 1 LIMIT 1",
    			$query
    		);
    
    	return $query;
    }
    if ( !empty($_POST['comment']) )
    	add_filter('query', 'remove_duplicate_comment_check');

    Сергей, спасибо! Как всегда спасли. Этот вариант больше подходит. всё должно быть универсально и независящее от update.

    спасибо всем!

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Как разрешить администратору писать ОДИНАКОВЫЕ комме» закрыта для новых ответов.