get_comment_class() WP 2.7.0

Отримує CSS класи у вигляді масиву для тега DIV, який обертається кожен коментар в циклі.

Докладніше дивіться в comment_class() .

Основа для:
comment_class()
1 раз – 0.001342 сек
(дуже повільно) | 50000 разів – 2.83 сек
(швидко) |
PHP 7.0.5, WP 4.4.2

Хуки з функції
get_comment_class($class, $comment_id, $post_id);
$class
(рядок/масив)
Один або більше класів, які потрібно додати до списку.


За замовчуванням: ”
$comment_id
(число/WP_Comment)
ID або об’єкт коментаря.


Типово: null (поточний коментар)
$post_id
(число/WP_Post)
ID або об’єкт запису (поста).


Типово: null (поточний пост)

Приклади

0

#1 Отримаємо css класи коментаря у вигляді масиву

$arr = get_comment_class( 'myclass', 123, 2);

print_r($arr);

/*
Array
(
	[0] => comment
	[1] => byuser
	[2] => comment-author-kama
	[3] => even
	[4] => thread-even
	[5] => depth-1
	[6] => myclass
)
*/

echo implode('', $arr);
// виведе: comment byuser comment-author-kama even thread-even depth-1 myclass

нотатки

  • Global. int. $comment_alt
  • Global. int. $comment_depth
  • Global. int. $comment_thread_alt

список змін

З версії 2.7.0Введено.
З версії 4.4.0Added ability for $comment_id для того, щоб accept a WP_Comment object.

Код get_comment_class() WP 6.0.2

function get_comment_class( $css_class = '', $comment_id = null, $post_id = null ) {
	Global $comment_alt, $comment_depth, $comment_thread_alt;

	$classes = array();

	$ comment = get_comment ($ comment_id);
	if ( ! $comment ) {
		return $classes;
	}

	// Get the comment type (comment, trackback).
	$classes[] = ( empty( $comment->comment_type ) ) ? 'comment' : $comment->comment_type;

	// Add classes for comment authors що є registered users.
	$user = $comment->user_id ? get_userdata( $comment->user_id ) : false;
	if ($user) {
		$classes[] = 'byuser';
		$classes[] = 'comment-author-' . sanitize_html_class( $user->user_nicename, $comment->user_id );
		// Для повідомлень авторів, які є авторами пісні.
		$post = get_post($post_id);
		if ($post) {
			if ( $comment->user_id === $post->post_author ) {
				$classes[] = 'bypostauthor';
			}
		}
	}

	if ( empty( $comment_alt ) ) {
		$ comment_alt = 0;
	}
	if ( empty( $comment_depth ) ) {
		$ comment_depth = 1;
	}
	if ( empty( $comment_thread_alt ) ) {
		$ comment_thread_alt = 0;
	}

	if ( $comment_alt % 2 ) {
		$classes[] = 'odd';
		$classes[] = 'alt';
	} else {
		$classes[] = 'even';
	}

	$comment_alt++;

	// Alt for top-level comments.
	if ( 1 == $comment_depth ) {
		if ( $comment_thread_alt % 2 ) {
			$classes[] = 'thread-odd';
			$classes[] = 'thread-alt';
		} else {
			$classes[] = 'thread-even';
		}
		$comment_thread_alt++;
	}

	$classes[] = "depth-$comment_depth";

	if ( ! empty( $css_class ) ) {
		if ( ! is_array( $css_class ) ) {
			$css_class = preg_split( '#s+#', $css_class );
		}
		$classes = array_merge( $classes, $css_class );
	}

	$classes = array_map( 'esc_attr', $classes );

	/**
	 * Filters returned CSS classes для current comment.
	 *
	 * @ Since 2.7.0
	 *
	 * @param string[] $classes An array of comment classes.
	 * @param string[] $css_class На array of additional classes added to the list.
	 * @param string $comment_id Коментарі ID як numeric string.
	 * @param WP_Comment $comment The comment object.
	 * @param int|WP_Post $post_id Поштовий ID або WP_Post об'єкт.
	 */
	return apply_filters( 'comment_class', $classes, $css_class, $comment->comment_ID, $comment, $post_id );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *