woocommerce_catalog_ordering()WC 1.0

Output the product sorting options.

Возвращает

null. Ничего (null).

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

woocommerce_catalog_ordering( $attributes );
$attributes(массив|null)
Block attributes.
По умолчанию: null

Код woocommerce_catalog_ordering() WC 9.8.2

function woocommerce_catalog_ordering( $attributes = null ) {
	if ( ! wc_get_loop_prop( 'is_paginated' ) || ! woocommerce_products_will_display() ) {
		return;
	}

	/**
	 * Filter the default catalog orderby.
	 *
	 * @since 1.6.4
	 *
	 * @param string $default_orderby The default orderby option.
	 */
	$show_default_orderby = 'menu_order' === apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby', 'menu_order' ) );

	if ( isset( $attributes ) && isset( $attributes['useLabel'] ) && $attributes['useLabel'] ) {
		/**
		 * Filters the catalog orderby options.
		 *
		 * @since 9.7.0
		 * @param array $catalog_orderby_options Array of catalog orderby options.
		 */
		$catalog_orderby_options = apply_filters(
			'woocommerce_catalog_orderby',
			array(
				'menu_order' => __( 'Default', 'woocommerce' ),
				'popularity' => __( 'Popularity', 'woocommerce' ),
				'rating'     => __( 'Average rating', 'woocommerce' ),
				'date'       => __( 'Latest', 'woocommerce' ),
				'price'      => __( 'Price: low to high', 'woocommerce' ),
				'price-desc' => __( 'Price: high to low', 'woocommerce' ),
			)
		);
	} else {
		// phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment
		$catalog_orderby_options = apply_filters(
			'woocommerce_catalog_orderby',
			array(
				'menu_order' => __( 'Default sorting', 'woocommerce' ),
				'popularity' => __( 'Sort by popularity', 'woocommerce' ),
				'rating'     => __( 'Sort by average rating', 'woocommerce' ),
				'date'       => __( 'Sort by latest', 'woocommerce' ),
				'price'      => __( 'Sort by price: low to high', 'woocommerce' ),
				'price-desc' => __( 'Sort by price: high to low', 'woocommerce' ),
			)
		);
	}

	$default_orderby = wc_get_loop_prop( 'is_search' ) ? 'relevance' : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby', '' ) );
	// phpcs:disable WordPress.Security.NonceVerification.Recommended
	$orderby = isset( $_GET['orderby'] ) ? wc_clean( wp_unslash( $_GET['orderby'] ) ) : $default_orderby;
	// phpcs:enable WordPress.Security.NonceVerification.Recommended

	if ( wc_get_loop_prop( 'is_search' ) ) {
		$catalog_orderby_options = array_merge( array( 'relevance' => __( 'Relevance', 'woocommerce' ) ), $catalog_orderby_options );

		unset( $catalog_orderby_options['menu_order'] );
	}

	if ( ! $show_default_orderby ) {
		unset( $catalog_orderby_options['menu_order'] );
	}

	if ( ! wc_review_ratings_enabled() ) {
		unset( $catalog_orderby_options['rating'] );
	}

	if ( is_array( $orderby ) ) {
		$orderby = current( array_intersect( $orderby, array_keys( $catalog_orderby_options ) ) );
	}

	if ( ! array_key_exists( $orderby, $catalog_orderby_options ) ) {
		$orderby = current( array_keys( $catalog_orderby_options ) );
	}

	wc_get_template(
		'loop/orderby.php',
		array(
			'catalog_orderby_options' => $catalog_orderby_options,
			'orderby'                 => $orderby,
			'show_default_orderby'    => $show_default_orderby,
			'use_label'               => isset( $attributes['useLabel'] ) ? $attributes['useLabel'] : false,
		)
	);
}