_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.0.4

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;

}