_acf_query_remove_post_type()ACF 5.1.5

_acf_query_remove_post_type

This function will remove the 'wp_posts.post_type' WHERE clause completely When using 'post__in', this clause is unneccessary and slow.

Внутренняя функция — эта функция рассчитана на использование самим ядром. Не рекомендуется использовать эту функцию в своем коде.

Хуков нет.

Возвращает

$sql.

Использование

_acf_query_remove_post_type( $sql );
$sql(обязательный)
.

Список изменений

С версии 5.1.5 Введена.

Код _acf_query_remove_post_type() ACF 6.4.2

function _acf_query_remove_post_type( $sql ) {

	// global
	global $wpdb;

	// bail early if no 'wp_posts.ID IN'
	if ( strpos( $sql, "$wpdb->posts.ID IN" ) === false ) {
		return $sql;
	}

	// get bits
	$glue = 'AND';
	$bits = explode( $glue, $sql );

	// loop through $where and remove any post_type queries
	foreach ( $bits as $i => $bit ) {
		if ( strpos( $bit, "$wpdb->posts.post_type" ) !== false ) {
			unset( $bits[ $i ] );
		}
	}

	// join $where back together
	$sql = implode( $glue, $bits );

	// return
	return $sql;
}