WP_Meta_Query::get_sql( string $type, string $primary_table, string $primary_id_column, object $context = null )
Generates SQL clauses to be appended to a main query.
Parameters
- $type
-
(string) (Required) Type of meta, eg 'user', 'post'.
- $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) (Optional) The main query object.
Default value: null
Return
(array|false) Array containing JOIN and WHERE SQL clauses to append to the main query.
-
'join'
(string) SQL fragment to append to the main JOIN clause. -
'where'
(string) SQL fragment to append to the main WHERE clause.
Source
File: wp-includes/class-wp-meta-query.php
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 ( false !== strpos( $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 array $sql Array containing the query's JOIN and WHERE clauses. * @param array $queries Array of meta queries. * @param string $type Type of meta. * @param string $primary_table Primary table. * @param string $primary_id_column Primary column ID. * @param object $context The main query object. */ return apply_filters_ref_array( 'get_meta_sql', array( $sql, $this->queries, $type, $primary_table, $primary_id_column, $context ) ); }
Changelog
Version | Description |
---|---|
3.2.0 | Introduced. |
© 2003–2021 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/classes/wp_meta_query/get_sql