Automattic\WooCommerce\Internal\ProductDownloads\ApprovedDirectories
Register::list
Lists currently approved directories.
Returned array will have the following structure:
[ 'total_urls' => 12345, 'total_pages' => 123, 'urls' => [], # StoredUrl[] ]
Метод класса: Register{}
Хуков нет.
Возвращает
Массив.
Использование
$Register = new Register(); $Register->list( $args ): array;
- $args(массив) (обязательный)
Controls pagination and ordering.
-
enabled(null|true|false)
Controls if only enabled (true), disabled (false) or all rules (null) should be listed. -
order(строка)
Ordering ('ASC' for ascending, 'DESC' for descending). -
order_by(строка)
Field to order by (one of 'url_id' or 'url'). -
page(int)
The page of results to retrieve. -
per_page(int)
The number of results to retrieve per page. - search(строка)
Term to search for.
-
Код Register::list() Register::list WC 10.4.0
public function list( array $args ): array {
global $wpdb;
$args = array_merge(
array(
'enabled' => null,
'order' => 'ASC',
'order_by' => 'url',
'page' => 1,
'per_page' => 20,
'search' => '',
),
$args
);
$table = $this->get_table();
$paths = array();
$order = in_array( $args['order'], array( 'ASC', 'DESC' ), true ) ? $args['order'] : 'ASC';
$order_by = in_array( $args['order_by'], array( 'url_id', 'url' ), true ) ? $args['order_by'] : 'url';
$page = absint( $args['page'] );
$per_page = absint( $args['per_page'] );
$enabled = is_bool( $args['enabled'] ) ? $args['enabled'] : null;
$search = '%' . $wpdb->esc_like( sanitize_text_field( $args['search'] ) ) . '%';
if ( $page < 1 ) {
$page = 1;
}
if ( $per_page < 1 ) {
$per_page = 1;
}
$where = array();
$where_sql = '';
if ( ! empty( $search ) ) {
$where[] = $wpdb->prepare( 'url LIKE %s', $search );
}
if ( is_bool( $enabled ) ) {
$where[] = 'enabled = ' . (int) $enabled;
}
if ( ! empty( $where ) ) {
$where_sql = 'WHERE ' . join( ' AND ', $where );
}
$limit_sql = $wpdb->prepare( 'LIMIT %d, %d', ( $page - 1 ) * $per_page, $per_page );
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
$results = $wpdb->get_results(
"
SELECT url_id, url, enabled
FROM {$table}
{$where_sql}
ORDER BY {$order_by} {$order}
{$limit_sql}
"
);
$total_rows = (int) $wpdb->get_var( "SELECT COUNT( * ) FROM {$table} {$where_sql}" );
// phpcs:enable
foreach ( $results as $single_result ) {
$paths[] = new StoredUrl( $single_result->url_id, $single_result->url, $single_result->enabled );
}
return array(
'total_urls' => $total_rows,
'total_pages' => (int) ceil( $total_rows / $per_page ),
'approved_directories' => $paths,
);
}