ГлавнаяФункции WPКомментарии, УведомленияКомментарии → wp_update_comment
GoGetLinks.net

wp_update_comment с версии 2.0.0

Комментариев: 7wp_update_comment
  • Решаю задачу как сделать добавление к тексту в теле сообщения
    текста следующего комментария, если эти комментарии от одного пользователя
    и следуют друг за другом.
    Застопорился на этом:

    <?php
        echo $comments = get_comments_number(); //Номер последнего комментария
        if ($user_identity == $comment->comment_author) //Сравнение имени пользователя с автором последнего сообщения
            {
            echo ' !дописать комментарий! ';
            // Массив данных  для обновления
            $commentarr = array();
            $commentarr['comment_ID'] = get_comments_number();
            $commentarr['comment_content'] = $updcomm.'<b>Добавленно позже</b>новый текст комментария';
    
            // Обновление БД
            wp_update_comment( $commentarr );
            }
        else {echo ' !Обычный режим! ';}
    
    ?>

    Условие If работает, но комментарий не обновляется.
    Выдает ошибку Warning: array_merge() [function.array-merge]: Argument #1 is not an array in www\wp-includes\comment.php on line 1315

    Что я делаю не так и в какое место файла comments.php следует правильнее вставить этот код?

    ОТВЕТИТЬ ↓
    • Если честно, я не понял что надо сделать. Вы пишите одно, а в коде нечто совсем другое.

      В коде ошибка: get_comments_number() - это не ID коммента, а число всех комментариев текущей статьи! Вы не правильно используете эту функцию. Такая строка правильная:

      $commentarr['comment_ID'] = $comment->comment_ID;
      ОТВЕТИТЬ ↓
  • Ситуация такая:
    У меня на блоге пользователи любят писать по несколько сообщений сразу (подряд). Например:
    1 сообщение: Спасибо.
    2 сообщение: Интересует такой вопрос ....
    3 сообщение: А можно сделать так .....?

    И так доходит до 6-7 сообщений подряд от одного пользователя. Сейчас есть страницы где более 200 комментариев.

    Чтобы не захломлять страницу и она имела человеческий вид, хочу сделать так:
    Если (IF) имя пользователя при оставлении нового сообщения совпадало с именем пользователя оставившего последнее сообщение, ТО: {
    новый комментарий не записываем, а дописываем старый. } ИНАЧЕ (ELSE) { проходит процедура стандартного записывания комментария.

    ОТВЕТИТЬ ↓
  • Ну что? Есть какие-то идеи?

    ОТВЕТИТЬ ↓
    • Идеи есть, делается это через фильтр отвечающий за публикацию комментария. Логика, которую вы предложили, вроде, логичная smile Техническую сторону я тут расписывать не буду!

      П.С. не задавайте 2 вопроса подряд, как буд-то я вам что-то должен. Плз!

      ОТВЕТИТЬ ↓
  • Теперь Вы поняли из-за чего я хочу написать эту доработку! smile
    Техническую сторону писать не прошу, укажите пожалуйста в каком месте и какого файла лучше всего расположить данный фильтр.

    Спасибо!

    ОТВЕТИТЬ ↓
    • Чтобы внедрится в момент, когда коммент поститься, но еще не записан в БД, используете фильтр preprocess_comment:

      function comment_glue(){
         // здесь ваша проверка
      }
      add_filter('preprocess_comment', 'comment_glue');

      Использовать этот код нужно будет в functions.php

      ОТВЕТИТЬ ↓
Форма комментирования

¤ Вставляйте код кнопкой: "Код" (php, js, html, css, sql);
¤ Выделяйте HTML код кнопкой: "Выделить" (<div>);
¤ Перед отправкой комментария используйте "Превью";
¤ Не пишите спам/бред — бесполезно!

Подписаться на комментарии без комментирования:

X

Забыли пароль?