WP_Privacy_Requests_Table::prepare_items()

In this article

Prepares items to output.

Source

public function prepare_items() {
	$this->items    = array();
	$posts_per_page = $this->get_items_per_page( $this->request_type . '_requests_per_page' );
	$args           = array(
		'post_type'      => $this->post_type,
		'post_name__in'  => array( $this->request_type ),
		'posts_per_page' => $posts_per_page,
		'offset'         => isset( $_REQUEST['paged'] ) ? max( 0, absint( $_REQUEST['paged'] ) - 1 ) * $posts_per_page : 0,
		'post_status'    => 'any',
		's'              => isset( $_REQUEST['s'] ) ? sanitize_text_field( $_REQUEST['s'] ) : '',
	);

	$orderby_mapping = array(
		'requester' => 'post_title',
		'requested' => 'post_date',
	);

	if ( isset( $_REQUEST['orderby'] ) && isset( $orderby_mapping[ $_REQUEST['orderby'] ] ) ) {
		$args['orderby'] = $orderby_mapping[ $_REQUEST['orderby'] ];
	}

	if ( isset( $_REQUEST['order'] ) && in_array( strtoupper( $_REQUEST['order'] ), array( 'ASC', 'DESC' ), true ) ) {
		$args['order'] = strtoupper( $_REQUEST['order'] );
	}

	if ( ! empty( $_REQUEST['filter-status'] ) ) {
		$filter_status       = isset( $_REQUEST['filter-status'] ) ? sanitize_text_field( $_REQUEST['filter-status'] ) : '';
		$args['post_status'] = $filter_status;
	}

	$requests_query = new WP_Query( $args );
	$requests       = $requests_query->posts;

	foreach ( $requests as $request ) {
		$this->items[] = wp_get_user_request( $request->ID );
	}

	$this->items = array_filter( $this->items );

	$this->set_pagination_args(
		array(
			'total_items' => $requests_query->found_posts,
			'per_page'    => $posts_per_page,
		)
	);
}

Changelog

VersionDescription
5.1.0Added support for column sorting.
4.9.6Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.