Для плагина Лейка WordPress добавить бейдж благотворителю

В плагине Лейка (плагин для пожертвований), если пользователь делает пожертвование, то ему добавляется роль Донор. Поэтому можно добавить бейдж в комментариях и отзывах на сайте, чтобы этим людям было приятно.
Необходимо включить аватарки на сайте, потому что мы добавляем бейдж по сути в аватарку.

плагин Лейка WordPress
add_filter( 'get_avatar', 'avs_add_donor_badge_to_avatar', 10, 3 );
function avs_add_donor_badge_to_avatar( $avatar_html, $id_or_email, $args ) {
	$donor_role = apply_filters( 'avs_donor_role_slug', 'donor' );

	// определяем user_id
	$user_id = 0;
	if ( is_numeric( $id_or_email ) ) {
		$user_id = (int) $id_or_email;
	} elseif ( $id_or_email instanceof WP_User ) {
		$user_id = $id_or_email->ID;
	} elseif ( $id_or_email instanceof WP_Comment ) {
		$user_id = (int) $id_or_email->user_id;
	} elseif ( is_object( $id_or_email ) && ! empty( $id_or_email->user_id ) ) {
		$user_id = (int) $id_or_email->user_id;
	} else {
		$user = get_user_by( 'email', (string) $id_or_email );
		if ( $user ) {
			$user_id = $user->ID;
		}
	}

	if ( ! $user_id ) {
		return $avatar_html;
	}

	$user = get_userdata( $user_id );
	if ( ! $user ) return $avatar_html;

	if ( empty( $user->roles ) || ! in_array( $donor_role, (array) $user->roles, true ) ) {
		return $avatar_html;
	}

	if ( is_admin() ) {
		return $avatar_html;
	}

	$in_comment_context = false;
	global $comment;
	if ( isset( $comment ) && $comment instanceof WP_Comment && (int) $comment->user_id === $user_id ) {
		$in_comment_context = true;
	}
	if ( ! $in_comment_context && is_array( $args ) && ! empty( $args['comment'] ) && $args['comment'] instanceof WP_Comment && (int) $args['comment']->user_id === $user_id ) {
		$in_comment_context = true;
	}
	if ( ! $in_comment_context ) {
		return $avatar_html;
	}

	$badge_text = apply_filters( 'avs_donor_badge_text', __( 'Помогаю приютам', 'your-text-domain' ) );
	$badge = '<span class="avs-donor-badge" aria-hidden="false">' . esc_html( $badge_text ) . '</span>';

	if ( strpos( $avatar_html, 'avs-avatar-with-badge' ) === false ) {
		$html  = '<div class="avs-avatar-with-badge">';
		$html .= $avatar_html;
		$html .= $badge;
		$html .= '</div>';
		return $html;
	}

	return $avatar_html;
}

Ну и немного css:

.avs-avatar-with-badge .avs-donor-badge {display:flex;margin-bottom:2px;font-size: 12px;color: #fff;background: #4f9e17;padding: 4px 8px;border-radius: 100px;font-weight:600;}

На основании ролей можно таким образом вывести любые бейджи.

Picture of Автор: Александра

Автор: Александра

@avsalexandra
Занимаюсь натуральным питанием собак и кошек BARF. Wordpress для души ☺️

Crocoblock
Elementor
Gutenberg
Jetengine
Jetformbuilder
profile builder
Woocommerce
Wordpress
WYSIWYG
Лейка
#автосохранение
#доменная почта
#рассылка
#бейдж
#благотворительность
#заказ ожидает
#подарок
#подчёркивание
#публикация постов
#видео
#пожертвования
#мультивыбор
#роли
#drag and drop
#изображения товаров
#подписки
#распродажа
#личный кабинет
#пагинация
#alt text
#галерея товара
#аватар
#возврат
#видео товара
#купон
#отменить заказ
Комментарии:

Добавить комментарий