WP_Meta_Query::get_sql()
Generates SQL clauses to be appended to a main query.
Method of the class: WP_Meta_Query{}
Hooks from the method
Return
String[]|false
. Array containing JOIN and WHERE SQL clauses to append to the main query, or false if no table exists for the requested meta type.
Usage
$WP_Meta_Query = new WP_Meta_Query(); $WP_Meta_Query->get_sql( $type, $primary_table, $primary_id_column, $context );
- $type(string) (required)
- Type of meta. Possible values include but are not limited to 'post', 'comment', 'blog', 'term', and 'user'.
- $primary_table(string) (required)
- Database table where the object being filtered is stored (eg wp_users).
- $primary_id_column(string) (required)
- ID column for the filtered object in $primary_table.
- $context(object)
- The main query object that corresponds to the type, for example a WP_Query, WP_User_Query, or WP_Site_Query.
Default: null
Changelog
Since 3.2.0 | Introduced. |
WP_Meta_Query::get_sql() WP Meta Query::get sql code WP 6.8
public function get_sql( $type, $primary_table, $primary_id_column, $context = null ) { $meta_table = _get_meta_table( $type ); if ( ! $meta_table ) { return false; } $this->table_aliases = array(); $this->meta_table = $meta_table; $this->meta_id_column = sanitize_key( $type . '_id' ); $this->primary_table = $primary_table; $this->primary_id_column = $primary_id_column; $sql = $this->get_sql_clauses(); /* * If any JOINs are LEFT JOINs (as in the case of NOT EXISTS), then all JOINs should * be LEFT. Otherwise posts with no metadata will be excluded from results. */ if ( str_contains( $sql['join'], 'LEFT JOIN' ) ) { $sql['join'] = str_replace( 'INNER JOIN', 'LEFT JOIN', $sql['join'] ); } /** * Filters the meta query's generated SQL. * * @since 3.1.0 * * @param string[] $sql Array containing the query's JOIN and WHERE clauses. * @param array $queries Array of meta queries. * @param string $type Type of meta. Possible values include but are not limited * to 'post', 'comment', 'blog', 'term', and 'user'. * @param string $primary_table Primary table. * @param string $primary_id_column Primary column ID. * @param object $context The main query object that corresponds to the type, for * example a `WP_Query`, `WP_User_Query`, or `WP_Site_Query`. */ return apply_filters_ref_array( 'get_meta_sql', array( $sql, $this->queries, $type, $primary_table, $primary_id_column, $context ) ); }