Automattic\WooCommerce\Internal\DataStores\Orders

OrdersTableSearchQuery::get_where_for_products()privateWC 1.0

Helper function to generate the WHERE clause for products search. Uses FTS when available.

Метод класса: OrdersTableSearchQuery{}

Хуков нет.

Возвращает

Строку|null. WHERE clause for products search.

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

// private - только в коде основоного (родительского) класса
$result = $this->get_where_for_products();

Код OrdersTableSearchQuery::get_where_for_products() WC 9.7.1

private function get_where_for_products() {
	global $wpdb;
	$db_util      = wc_get_container()->get( DatabaseUtil::class );
	$items_table  = $this->query->get_table_name( 'items' );
	$orders_table = $this->query->get_table_name( 'orders' );
	$fts_enabled  = get_option( CustomOrdersTableController::HPOS_FTS_INDEX_OPTION ) === 'yes' && get_option( CustomOrdersTableController::HPOS_FTS_ORDER_ITEM_INDEX_CREATED_OPTION ) === 'yes';

	if ( $fts_enabled ) {
		// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $orders_table and $items_table are hardcoded.
		return $wpdb->prepare(
			"
$orders_table.id in (
SELECT order_id FROM $items_table search_query_items WHERE
MATCH ( search_query_items.order_item_name ) AGAINST ( %s IN BOOLEAN MODE )
)
",
			$wpdb->esc_like( $db_util->sanitise_boolean_fts_search_term( $this->search_term ) ),
		);
		// phpcs:enable
	}

	// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $orders_table and $items_table are hardcoded.
	return $wpdb->prepare(
		"
$orders_table.id in (
SELECT order_id FROM $items_table search_query_items WHERE
search_query_items.order_item_name LIKE %s
)
",
		'%' . $wpdb->esc_like( $this->search_term ) . '%'
	);
	// phpcs:enable
}