WP_Meta_Query::get_sql() – Generates SQL clauses to be appended to a main query.

You appear to be a bot. Output may be restricted

Description

Generates SQL clauses to be appended to a main query.

Usage

$string[]|false = WP_Meta_Query::get_sql( $type, $primary_table, $primary_id_column, $context );

Parameters

$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 ) optional – Optional. The main query object that corresponds to the type, for example a `WP_Query`, `WP_User_Query`, or `WP_Site_Query`.
$join
( string ) optional – SQL fragment to append to the main JOIN clause.
$where
( string ) optional – SQL fragment to append to the main WHERE clause. }

Returns

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.

Source

File name: wordpress/wp-includes/class-wp-meta-query.php


Lines:

1 to 42 of 42
  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->WP_Meta_Query::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 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 ) );
  }
 

 View on GitHub View on Trac