WC_Admin_Log_Table_List::get_total_items_count()protectedWC 1.0

Get the total count of log entries in the database.

The query in this method can be slow if there are a large (100k+) rows in the database table, so this uses a transient to cache the count for 10 minutes if the count is over that threshold.

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

Хуков нет.

Возвращает

int.

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

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

Код WC_Admin_Log_Table_List::get_total_items_count() WC 9.8.1

protected function get_total_items_count() {
	global $wpdb;

	$where         = $this->get_items_query_where();
	$version       = \WC_Cache_Helper::get_transient_version( 'logs-db' );
	$transient_key = 'wc-log-total-items-count-' . md5( $where );
	$transient     = get_transient( $transient_key );
	if (
		false !== $transient
		&& isset( $transient['value'], $transient['version'] )
		&& $transient['version'] === $version
	) {
		return $transient['value'];
	}

	$count_query = "
		SELECT COUNT(*)
		FROM {$wpdb->prefix}woocommerce_log
		{$where}
	";

	// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- The where clause is prepared in a separate method.
	$count = intval( $wpdb->get_var( $count_query ) );

	if ( $count > self::ITEM_COUNT_CACHE_THRESHOLD ) {
		$transient = array(
			'value'   => $count,
			'version' => \WC_Cache_Helper::get_transient_version( 'logs-db', true ),
		);

		set_transient( $transient_key, $transient, 10 * MINUTE_IN_SECONDS );
	} else {
		delete_transient( $transient_key );
	}

	return $count;
}