wp_notify_moderator

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

Обратите внимание, только для комментов на проверке!

Функция не не будет работать вообще, если в настройках не указана опция: “Настройки > Обсуждение > Отправить мне письмо, когда > Комментарий ожидает проверки”:

comment

Т.е. функция зависит от опции moderation_notify, чтобы включить работу функции в любом случае, можно использовать фильтр notify_moderator

Если у автора записи нет прав редактировать комментарии, то он уведомление не получит.

Функция может быть заменена через плагин. Если плагин не переопределил данную функцию, то будет использована функция по умолчанию.
Хуки из функции:
comment_moderation_headers
comment_moderation_recipients
comment_moderation_subject
comment_moderation_text
notify_moderator
Возвращает

Всегда возвращает true.

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

wp_notify_moderator( $comment_id );
$comment_id(число) (обязательный)
ID нового комментария.

Примеры

#1 Изменим стандартную функцию

Чтобы изменить функцию как нам вздумается, нужно создать плагин, с таким кодом:

<?php
function wp_notify_moderator($comment_id) {
	global $wpdb;

	$maybe_notify = get_option( 'moderation_notify' );

	/**
	 * Filters whether to send the site moderator email notifications, overriding the site setting.
	 *
	 * @since 4.4.0
	 *
	 * @param bool $maybe_notify Whether to notify blog moderator.
	 * @param int  $comment_ID   The id of the comment for the notification.
	 */
	$maybe_notify = apply_filters( 'notify_moderator', $maybe_notify, $comment_id );

	if ( ! $maybe_notify ) {
		return true;
	}

	$comment = get_comment($comment_id);
	$post = get_post($comment->comment_post_ID);
	$user = get_userdata( $post->post_author );
	// Send to the administration and to the post author if the author can modify the comment.
	$emails = array( get_option( 'admin_email' ) );
	if ( $user && user_can( $user->ID, 'edit_comment', $comment_id ) && ! empty( $user->user_email ) ) {
		if ( 0 !== strcasecmp( $user->user_email, get_option( 'admin_email' ) ) )
			$emails[] = $user->user_email;
	}

	$switched_locale = switch_to_locale( get_locale() );

	$comment_author_domain = @gethostbyaddr($comment->comment_author_IP);
	$comments_waiting = $wpdb->get_var("SELECT count(comment_ID) FROM $wpdb->comments WHERE comment_approved = '0'");

	// The blogname option is escaped with esc_html on the way into the database in sanitize_option
	// we want to reverse this for the plain text arena of emails.
	$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
	$comment_content = wp_specialchars_decode( $comment->comment_content );

	switch ( $comment->comment_type ) {
		case 'trackback':
			/* translators: 1: Post title */
			$notify_message  = sprintf( __('A new trackback on the post "%s" is waiting for your approval'), $post->post_title ) . "rn";
			$notify_message .= get_permalink($comment->comment_post_ID) . "rnrn";
			/* translators: 1: Trackback/pingback website name, 2: website IP, 3: website hostname */
			$notify_message .= sprintf( __( 'Website: %1$s (IP: %2$s, %3$s)' ), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "rn";
			/* translators: 1: Trackback/pingback/comment author URL */
			$notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "rn";
			$notify_message .= __('Trackback excerpt: ') . "rn" . $comment_content . "rnrn";
			break;
		case 'pingback':
			/* translators: 1: Post title */
			$notify_message  = sprintf( __('A new pingback on the post "%s" is waiting for your approval'), $post->post_title ) . "rn";
			$notify_message .= get_permalink($comment->comment_post_ID) . "rnrn";
			/* translators: 1: Trackback/pingback website name, 2: website IP, 3: website hostname */
			$notify_message .= sprintf( __( 'Website: %1$s (IP: %2$s, %3$s)' ), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "rn";
			/* translators: 1: Trackback/pingback/comment author URL */
			$notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "rn";
			$notify_message .= __('Pingback excerpt: ') . "rn" . $comment_content . "rnrn";
			break;
		default: // Comments
			/* translators: 1: Post title */
			$notify_message  = sprintf( __('A new comment on the post "%s" is waiting for your approval'), $post->post_title ) . "rn";
			$notify_message .= get_permalink($comment->comment_post_ID) . "rnrn";
			/* translators: 1: Comment author name, 2: comment author's IP, 3: comment author IP's hostname */
			$notify_message .= sprintf( __( 'Author: %1$s (IP: %2$s, %3$s)' ), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "rn";
			/* translators: 1: Comment author URL */
			$notify_message .= sprintf( __( 'Email: %s' ), $comment->comment_author_email ) . "rn";
			/* translators: 1: Trackback/pingback/comment author URL */
			$notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "rn";
			/* translators: 1: Comment text */
			$notify_message .= sprintf( __( 'Comment: %s' ), "rn" . $comment_content ) . "rnrn";
			break;
	}

	/* translators: Comment moderation. 1: Comment action URL */
	$notify_message .= sprintf( __( 'Approve it: %s' ), admin_url( "comment.php?action=approve&c={$comment_id}#wpbody-content" ) ) . "rn";

	if ( EMPTY_TRASH_DAYS ) {
		/* translators: Comment moderation. 1: Comment action URL */
		$notify_message .= sprintf( __( 'Trash it: %s' ), admin_url( "comment.php?action=trash&c={$comment_id}#wpbody-content" ) ) . "rn";
	} else {
		/* translators: Comment moderation. 1: Comment action URL */
		$notify_message .= sprintf( __( 'Delete it: %s' ), admin_url( "comment.php?action=delete&c={$comment_id}#wpbody-content" ) ) . "rn";
	}

	/* translators: Comment moderation. 1: Comment action URL */
	$notify_message .= sprintf( __( 'Spam it: %s' ), admin_url( "comment.php?action=spam&c={$comment_id}#wpbody-content" ) ) . "rn";

	/* translators: Comment moderation. 1: Number of comments awaiting approval */
	$notify_message .= sprintf( _n('Currently %s comment is waiting for approval. Please visit the moderation panel:',
 		'Currently %s comments are waiting for approval. Please visit the moderation panel:', $comments_waiting), number_format_i18n($comments_waiting) ) . "rn";
	$notify_message .= admin_url( "edit-comments.php?comment_status=moderated#wpbody-content" ) . "rn";

	/* translators: Comment moderation notification email subject. 1: Site name, 2: Post title */
	$subject = sprintf( __('[%1$s] Please moderate: "%2$s"'), $blogname, $post->post_title );
	$message_headers = '';

	/**
	 * Filters the list of recipients for comment moderation emails.
	 *
	 * @since 3.7.0
	 *
	 * @param array $emails     List of email addresses to notify for comment moderation.
	 * @param int   $comment_id Comment ID.
	 */
	$emails = apply_filters( 'comment_moderation_recipients', $emails, $comment_id );

	/**
	 * Filters the comment moderation email text.
	 *
	 * @since 1.5.2
	 *
	 * @param string $notify_message Text of the comment moderation email.
	 * @param int    $comment_id     Comment ID.
	 */
	$notify_message = apply_filters( 'comment_moderation_text', $notify_message, $comment_id );

	/**
	 * Filters the comment moderation email subject.
	 *
	 * @since 1.5.2
	 *
	 * @param string $subject    Subject of the comment moderation email.
	 * @param int    $comment_id Comment ID.
	 */
	$subject = apply_filters( 'comment_moderation_subject', $subject, $comment_id );

	/**
	 * Filters the comment moderation email headers.
	 *
	 * @since 2.8.0
	 *
	 * @param string $message_headers Headers for the comment moderation email.
	 * @param int    $comment_id      Comment ID.
	 */
	$message_headers = apply_filters( 'comment_moderation_headers', $message_headers, $comment_id );

	foreach ( $emails as $email ) {
		@wp_mail( $email, wp_specialchars_decode( $subject ), $notify_message, $message_headers );
	}

	if ( $switched_locale ) {
		restore_previous_locale();
	}

	return true;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *