WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru
функция не описана

WP_Comments_List_Table::handle_row_actions() WP 4.3.0

Generate and display row actions links.

Это метод класса: WP_Comments_List_Table

Хуки из метода
Возвращает

Строку/null. Comment row actions output.

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

$WP_Comments_List_Table = new WP_Comments_List_Table();
$var = $WP_Comments_List_Table->handle_row_actions( $comment, $column_name, $primary );
$comment(WP_Comment) (обязательный)
The comment object.
$column_name(строка) (обязательный)
Current column name.
$primary(строка) (обязательный)
Primary column name.

Заметки

  • Global. Строка. $comment_status Status for the current listed comments.

Список изменений

С версии 4.3.0 Введена.

Код WP Comments List Table::handle row actions: wp-admin/includes/class-wp-comments-list-table.php WP 5.3.2

<?php
protected function handle_row_actions( $comment, $column_name, $primary ) {
	global $comment_status;

	if ( $primary !== $column_name ) {
		return '';
	}

	if ( ! $this->user_can ) {
		return;
	}

	$the_comment_status = wp_get_comment_status( $comment );

	$out = '';

	$del_nonce     = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) );
	$approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) );

	$url = "comment.php?c=$comment->comment_ID";

	$approve_url   = esc_url( $url . "&action=approvecomment&$approve_nonce" );
	$unapprove_url = esc_url( $url . "&action=unapprovecomment&$approve_nonce" );
	$spam_url      = esc_url( $url . "&action=spamcomment&$del_nonce" );
	$unspam_url    = esc_url( $url . "&action=unspamcomment&$del_nonce" );
	$trash_url     = esc_url( $url . "&action=trashcomment&$del_nonce" );
	$untrash_url   = esc_url( $url . "&action=untrashcomment&$del_nonce" );
	$delete_url    = esc_url( $url . "&action=deletecomment&$del_nonce" );

	// Preorder it: Approve | Reply | Quick Edit | Edit | Spam | Trash.
	$actions = array(
		'approve'   => '',
		'unapprove' => '',
		'reply'     => '',
		'quickedit' => '',
		'edit'      => '',
		'spam'      => '',
		'unspam'    => '',
		'trash'     => '',
		'untrash'   => '',
		'delete'    => '',
	);

	// Not looking at all comments.
	if ( $comment_status && 'all' != $comment_status ) {
		if ( 'approved' === $the_comment_status ) {
			$actions['unapprove'] = sprintf(
				'<a href="%s" data-wp-lists="%s" class="vim-u vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
				$unapprove_url,
				"delete:the-comment-list:comment-{$comment->comment_ID}:e7e7d3:action=dim-comment&amp;new=unapproved",
				esc_attr__( 'Unapprove this comment' ),
				__( 'Unapprove' )
			);
		} elseif ( 'unapproved' === $the_comment_status ) {
			$actions['approve'] = sprintf(
				'<a href="%s" data-wp-lists="%s" class="vim-a vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
				$approve_url,
				"delete:the-comment-list:comment-{$comment->comment_ID}:e7e7d3:action=dim-comment&amp;new=approved",
				esc_attr__( 'Approve this comment' ),
				__( 'Approve' )
			);
		}
	} else {
		$actions['approve'] = sprintf(
			'<a href="%s" data-wp-lists="%s" class="vim-a aria-button-if-js" aria-label="%s">%s</a>',
			$approve_url,
			"dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=approved",
			esc_attr__( 'Approve this comment' ),
			__( 'Approve' )
		);

		$actions['unapprove'] = sprintf(
			'<a href="%s" data-wp-lists="%s" class="vim-u aria-button-if-js" aria-label="%s">%s</a>',
			$unapprove_url,
			"dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=unapproved",
			esc_attr__( 'Unapprove this comment' ),
			__( 'Unapprove' )
		);
	}

	if ( 'spam' !== $the_comment_status ) {
		$actions['spam'] = sprintf(
			'<a href="%s" data-wp-lists="%s" class="vim-s vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
			$spam_url,
			"delete:the-comment-list:comment-{$comment->comment_ID}::spam=1",
			esc_attr__( 'Mark this comment as spam' ),
			/* translators: "Mark as spam" link. */
			_x( 'Spam', 'verb' )
		);
	} elseif ( 'spam' === $the_comment_status ) {
		$actions['unspam'] = sprintf(
			'<a href="%s" data-wp-lists="%s" class="vim-z vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
			$unspam_url,
			"delete:the-comment-list:comment-{$comment->comment_ID}:66cc66:unspam=1",
			esc_attr__( 'Restore this comment from the spam' ),
			_x( 'Not Spam', 'comment' )
		);
	}

	if ( 'trash' === $the_comment_status ) {
		$actions['untrash'] = sprintf(
			'<a href="%s" data-wp-lists="%s" class="vim-z vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
			$untrash_url,
			"delete:the-comment-list:comment-{$comment->comment_ID}:66cc66:untrash=1",
			esc_attr__( 'Restore this comment from the Trash' ),
			__( 'Restore' )
		);
	}

	if ( 'spam' === $the_comment_status || 'trash' === $the_comment_status || ! EMPTY_TRASH_DAYS ) {
		$actions['delete'] = sprintf(
			'<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
			$delete_url,
			"delete:the-comment-list:comment-{$comment->comment_ID}::delete=1",
			esc_attr__( 'Delete this comment permanently' ),
			__( 'Delete Permanently' )
		);
	} else {
		$actions['trash'] = sprintf(
			'<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
			$trash_url,
			"delete:the-comment-list:comment-{$comment->comment_ID}::trash=1",
			esc_attr__( 'Move this comment to the Trash' ),
			_x( 'Trash', 'verb' )
		);
	}

	if ( 'spam' !== $the_comment_status && 'trash' !== $the_comment_status ) {
		$actions['edit'] = sprintf(
			'<a href="%s" aria-label="%s">%s</a>',
			"comment.php?action=editcomment&amp;c={$comment->comment_ID}",
			esc_attr__( 'Edit this comment' ),
			__( 'Edit' )
		);

		$format = '<button type="button" data-comment-id="%d" data-post-id="%d" data-action="%s" class="%s button-link" aria-expanded="false" aria-label="%s">%s</button>';

		$actions['quickedit'] = sprintf(
			$format,
			$comment->comment_ID,
			$comment->comment_post_ID,
			'edit',
			'vim-q comment-inline',
			esc_attr__( 'Quick edit this comment inline' ),
			__( 'Quick&nbsp;Edit' )
		);

		$actions['reply'] = sprintf(
			$format,
			$comment->comment_ID,
			$comment->comment_post_ID,
			'replyto',
			'vim-r comment-inline',
			esc_attr__( 'Reply to this comment' ),
			__( 'Reply' )
		);
	}

	/** This filter is documented in wp-admin/includes/dashboard.php */
	$actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment );

	$i    = 0;
	$out .= '<div class="row-actions">';
	foreach ( $actions as $action => $link ) {
		++$i;
		( ( ( 'approve' === $action || 'unapprove' === $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ';

		// Reply and quickedit need a hide-if-no-js span when not added with ajax
		if ( ( 'reply' === $action || 'quickedit' === $action ) && ! wp_doing_ajax() ) {
			$action .= ' hide-if-no-js';
		} elseif ( ( $action === 'untrash' && $the_comment_status === 'trash' ) || ( $action === 'unspam' && $the_comment_status === 'spam' ) ) {
			if ( '1' == get_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', true ) ) {
				$action .= ' approve';
			} else {
				$action .= ' unapprove';
			}
		}

		$out .= "<span class='$action'>$sep$link</span>";
	}
	$out .= '</div>';

	$out .= '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __( 'Show more details' ) . '</span></button>';

	return $out;
}