LLMS_Admin_Post_Table_Orders::modify_admin_search( WP_Query $query )

Modify the search query for various post types before retrieving posts.


Parameters Parameters

$query

(WP_Query) (Required) Query object.


Top ↑

Return Return

(WP_Query)


Top ↑

Source Source

File: includes/admin/post-types/post-tables/class.llms.admin.post.table.orders.php

	public function modify_admin_search( $query ) {

		// On the admin posts order table.
		// Allow searching of custom fields.
		if ( is_admin() && ! empty( $query->query_vars['s'] ) && isset( $query->query_vars['post_type'] ) && 'llms_order' === $query->query_vars['post_type'] ) {

			// What we are searching for.
			$term = $query->query_vars['s'];

			// Search wp_users.
			$user_query = new WP_User_Query(
				array(
					'search'         => '*' . esc_attr( $term ) . '*',
					'search_columns' => array( 'user_login', 'user_url', 'user_email', 'user_nicename', 'display_name' ),
					'fields'         => 'ID',
				)
			);

			// Search wp_usermeta for First and Last names.
			$user_query2 = new WP_User_Query(
				array(
					'fields'     => 'ID',
					'meta_query' => array(
						'relation' => 'OR',
						array(
							'key'     => 'first_name',
							'value'   => $term,
							'compare' => 'LIKE',
						),
						array(
							'key'     => 'last_name',
							'value'   => $term,
							'compare' => 'LIKE',
						),
					),
				)
			);

			$results = wp_parse_id_list( array_merge( (array) $user_query->get_results(), (array) $user_query2->get_results() ) );

			// Add metaquery for the user id.
			$meta_query = array(
				'relation' => 'OR',
				array(
					'key'     => '_llms_user_id',
					'value'   => $results,
					'compare' => 'IN',
				),
			);

			// We have to kill this value so that the query actually works.
			$query->query_vars['s'] = '';

			// Set the query.
			$query->set( 'meta_query', $meta_query );

			// Add a filter back in so we don't have 'Search results for ""' on the top of the screen.
			// @note we're not super proud of this incredible piece of duct tape.
			add_filter(
				'get_search_query',
				function( $q ) {
					if ( '' === $q ) {
						return llms_filter_input_sanitize_string( INPUT_GET, 's' );
					}
				}
			);

		}

		return $query;

	}


Top ↑

Changelog Changelog

Changelog
Version Description
5.9.0 Stop using deprecated FILTER_SANITIZE_STRING.
3.35.0 Sanitize $_GET data.
3.24.3 Unknown
2.5.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

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