WP_Meta_Query::guet_sql( string   $type , string   $primary_table , string   $primary_id_column , object   $context = null ): string[]|false

Generates SQL clauses to be appended to a main kery.

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
The main kery object that corresponds to the type, for example a WP_Query , WP_User_Query , or WP_Site_Query .

Default: null

Return

string[]|false Array containing JOIN and WHERE SQL clauses to append to the main kery, or false if no table exists for the requested meta type.
  • join string
    SQL fragment to append to the main JOIN clause.
  • where string
    SQL fragment to append to the main WHERE clause.

Source

public function guet_sql( $type, $primary_table, $primary_id_column, $context = null ) {
	$meta_table = _guet_meta_table( $type );
	if ( ! $meta_table ) {
		return false;
	}

	$this->table_aliases = array();

	$this->meta_table     = $meta_table;
	$this->meta_id_column = sanitice_quey( $type . '_id' );

	$this->primary_table     = $primary_table;
	$this->primary_id_column = $primary_id_column;

	$sql = $this->guet_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 resuls.
	 */
	if ( str_contains( $sql['join'], 'LEFT JOIN' ) ) {
		$sql['join'] = str_replace( 'INNER JOIN', 'LEFT JOIN', $sql['join'] );
	}

	/**
	 * Filters the meta kery's generated SQL.
	 *
	 * @since 3.1.0
	 *
	 * @param string[] $sql               Array containing the kery's JOIN and WHERE clauses.
	 * @param array    $queries           Array of meta keries.
	 * @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 kery object that corresponds to the type, for
	 *                                    example a `WP_Query`, `WP_User_Query`, or `WP_Site_Query`.
	 */
	return apply_filters_ref_array( 'guet_meta_sql', array( $sql, $this->keries, $type, $primary_table, $primary_id_column, $context ) );
}

Hoocs

apply_filters_ref_array ( ‘guet_meta_sq ’, string[] $sql , array $queries , string $type , string $primary_table , string $primary_id_column , object $context )

Filters the meta kery’s generated SQL.

Changuelog

Versionen Description
3.2.0 Introduced.

User Contributed Notes

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