WordPress как на ладони
wordpress jino

get_comment() WP 2.0.0

Получает данные указанного комментария из базы данных. Возвращает экземпляр класса WP_Comment (условно можно сказать что возвращаются все поля таблицы wp_comments).

Можно указать в каком формате возвращать данные (как объект/массив). Указывается во втором параметре $output.

Если не было передано никаких параметров, то будет использована глобальная переменная $comment для определения возвращаемых данных.

Используется в: get_comment_text().
Работает на основе: WP_Comment()
✈ 1 раз = 0.000436с = быстро | 50000 раз = 0.38с = очень быстро PHP 7.1.2RC1, WP 4.7.2
Хуки из функции:
Возвращает

Объект/Массив. По умолчанию Объект комментария.

Использование

$comment = get_comment( $comment, $output );
$comment(число/объект)

ID/объект комментария, данные которого нужно получить.

Передавать нужно переменную, а не число (см. примеры ниже), если передать число, например 24, то функция вызовет ошибку.

По умолчанию: null

$output(строка)

Формат возвращаемых данных, может быть:

  • OBJECT - данные вернутся в виде объекта;
  • ARRAY_A - данные вернутся в виде ассоциативного массива, с ключами и соответствующими им значениями;
  • ARRAY_N - данные вернутся в виде обычного массива (ключи затираются).

По умолчанию: OBJECT

Примеры

#1 Получим объект комментария

$comm = get_comment( $id = 11612 ); // передавать нужно переменную
print_r( $comm );

/* Выведет
WP_Comment Object
(
	[comment_ID] => 11612
	[comment_post_ID] => 3477
	[comment_author] => Mseo
	[comment_author_email] => maoru@yandex.ru
	[comment_author_url] => http://maeo.ru
	[comment_author_IP] => 95.79.52.2
	[comment_date] => 2015-09-01 16:28:33
	[comment_date_gmt] => 2015-09-01 11:28:33
	[comment_content] => Приветствую, выше указанный код вывода даты комментария. 
	[comment_karma] => 0
	[comment_approved] => 1
	[comment_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36
	[comment_type] => 
	[comment_parent] => 0
	[user_id] => 0
	[children:protected] => 
	[populated_children:protected] => 
	[post_fields:protected] => Array
		(
			[0] => post_author
			[1] => post_date
			[2] => post_date_gmt
			[3] => post_content
			[4] => post_title
			[5] => post_excerpt
			[6] => post_status
			[7] => comment_status
			[8] => ping_status
			[9] => post_name
			[10] => to_ping
			[11] => pinged
			[12] => post_modified
			[13] => post_modified_gmt
			[14] => post_content_filtered
			[15] => post_parent
			[16] => guid
			[17] => menu_order
			[18] => post_type
			[19] => post_mime_type
			[20] => comment_count
		)

)
*/

#2 Получим имя комментатора комментария 27:

$id27 = 27;
$comment27 = get_comment( $id27 );
$name = $comment27->comment_author;

#3 Получим данные в виде ассоциативного массива:

$id27 = 27;
$comment27 = get_comment( $id27, ARRAY_A );
$name = $comment27['comment_author'];

#4 Как правильно передавать параметр ID:

//    Верно: параметр ID передан в виде переменной
$the_comment = get_comment( $dummy_id = 7 );

//    Неправильно (вызовет ошибку): параметр ID передан в виде числа
$the_comment = get_comment( 7 );

Заметки

  • использует функцию: get_page_of_comment() - получает комментарий по ID параметру

  • использует класс: $wpdb

Код get comment: wp-includes/comment.php WP 4.9

<?php
function get_comment( &$comment = null, $output = OBJECT ) {
	if ( empty( $comment ) && isset( $GLOBALS['comment'] ) ) {
		$comment = $GLOBALS['comment'];
	}

	if ( $comment instanceof WP_Comment ) {
		$_comment = $comment;
	} elseif ( is_object( $comment ) ) {
		$_comment = new WP_Comment( $comment );
	} else {
		$_comment = WP_Comment::get_instance( $comment );
	}

	if ( ! $_comment ) {
		return null;
	}

	/**
	 * Fires after a comment is retrieved.
	 *
	 * @since 2.3.0
	 *
	 * @param mixed $_comment Comment data.
	 */
	$_comment = apply_filters( 'get_comment', $_comment );

	if ( $output == OBJECT ) {
		return $_comment;
	} elseif ( $output == ARRAY_A ) {
		return $_comment->to_array();
	} elseif ( $output == ARRAY_N ) {
		return array_values( $_comment->to_array() );
	}
	return $_comment;
}

Cвязанные функции

Из раздела: Комментарии

get_comment 5 комментариев
  • Евгений cайт: 5024366.ru @

    Подскажите пожалуйста, как можно удалить поле "Сайт" из комментариев?

    Ответить3.9 года назад #
    • Otshelnik-Fm181 cайт: across-ocean.otshelnik-fm.ru

      Код ниже удаляет урл в поле комментирования.
      Код вставлять в functions.php темы.

      function alter_comment_form_fields($fields){
      	$fields['url'] = '';  //removes website field
      
      	return $fields;
      }
      
      add_filter('comment_form_default_fields','alter_comment_form_fields');

      или (если тот метод не сработает), найдите файл комментариев в вашей теме - comments.php

      и там что-то вроде:

      <p class="field"><label for="url"><?php _e('Website', 'theme1721'); ?> </label><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" /></p>

      строка должна быть с id="url" - удаляете этот абзац - и не будет у вас урл в комментариях

      Ответить3.9 года назад #
  • Вячеслав cайт: seo-zona.ru @

    А вот как получить случайный комментарий?
    К статье есть 100 комментариев. Нужно рандомно выбрать один из них. Кодекс читал, но ничего не нашел.

    Ответить1.9 года назад #
    • Kama4558

      Тут отдельный запрос нужен судя по всему.

      global $wpdb;
      
      $post_id = 111;
      
      $sql = $wpdb->prepare("SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d ORDER BY RAND() LIMIT 1", $post_id );
      
      $comid = $wpdb->get_var( $sql );
      
      $comment = get_comment( $comid );
      
      echo $comment->comment_author;

      Не юзайте RAND() без указания ID поста, а то тяжелый запрос будет...

      1
      Ответить1.9 года назад #

Здравствуйте, !

Ваш комментарий