افراد زیادی هستند که از ووکامرس برای فروش محصولاتشان به مشتریان و عمده فروشان استفاده می‌کنند. اگر این افراد بخواهند سفارشات ووکامرس را براساس هر نقش فیلتر و مشاهده کنند، به صورت پیش‌فرض هیچ راه حلی وجود ندارد. ما در این نوشته به شما نحوه فیلتر سفارش‌های ووکامرس براساس نقش کاربر را آموزش می‌دهیم.

فیلتر سفارش‌ها در پیشخوان وردپرس

مشاهده سفارش‌های ووکامرس براساس نقش کاربر

قطعه کد زیر سفارشات ووکامرس را براساس نقش کاربر فیلتر خواهد کرد. در واقع این قطعه کد یک لیست کشویی شامل همه نقش‌های موجود در برگه سفارشات پیشخوان وردپرس ایجاد خواهد کرد و مدیر فروشگاه می‌تواند با انتخاب هر نقش، سفارشاتی که توسط کاربران آن نقش ایجاد شده را مشاهده کند.

نکته: به منظور استفاده از کد، پیشنهاد می‌شود آن را در افزونه اختصاصی‌تان یا در فایل functions.php پوسته فرزند قرار دهید.

/**
 * @snippet       Filter Woocommerce Orders By User Role
 * @author        Jeroen Sormani
 * @testedwith    WooCommerce 4
 */
 
add_action( 'restrict_manage_posts', 'js_shop_order_user_role_filter' );
 
/**
 * Add a role filter dropdown to the WooCommerce shop order page.
 * 
 * @return void
 */
function js_shop_order_user_role_filter()
{

	global $typenow, $wp_query;

	if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) )
    {
		$user_role	= '';

		// Get all user roles
		$user_roles = array( 'guest' => 'Guest' );
		foreach ( get_editable_roles() as $key => $values ) {
			$user_roles[ $key ] = $values['name'];
		}

		// Set a selected user role
		if ( ! empty( $_GET['_user_role'] ) ) {
			$user_role	= sanitize_text_field( $_GET['_user_role'] );
		}

		// Display drop down
		?>
        <select name='_user_role'>
			<option value=''><?php _e( 'Select a user role', 'woocommerce' ); ?></option>
            <?php foreach ( $user_roles as $key => $value ) : ?>
            <option <?php selected( $user_role, $key ); ?> value='<?php echo $key; ?>'><?php echo $value; ?></option>
            <?php endforeach; ?>
        </select>
        <?php
	}

}

add_filter( 'pre_get_posts', 'js_shop_order_user_role_posts_where' );

/**
 * Filter orders by user role on the WooCommerce shop order page.
 * 
 * @param WP_Query $query The main WP_Query object.
 * 
 * @return void
 */
function js_shop_order_user_role_posts_where( $query )
{

	if ( ! $query->is_main_query() || empty( $_GET['_user_role'] ) || $_GET['post_type'] !== 'shop_order' ) {
		return;
	}

	if ( $_GET['_user_role'] != 'guest' ) {
		$ids = get_users( array( 'role' => sanitize_text_field( $_GET['_user_role'] ), 'fields' => 'ID' ) );
		$ids = array_map( 'absint', $ids );
	} else {
		$ids = array( 0 );
	}

	$query->set( 'meta_query', array(
		array(
			'key' => '_customer_user',
			'compare' => 'IN',
			'value' => $ids,
		)
	) );

	if ( empty( $ids ) ) {
		$query->set( 'posts_per_page', 0 );
	}
}

در این نوشته ترفند فیلتر سفارش‌های ووکامرس براساس نقش کاربری توضیح داده شد. پس از اجرای کد بالا، لیست کشویی همانند تصویر زیر در برگه سفارش‌های ووکامرس در پیشخوان ایجاد خواهد شد و مدیر فروشگاه به راحتی می‌تواند با انتخاب هر نقش و کلیک کردن بر روی دکمه فیلتر، سفارشات فیلتر شده را مشاهده کند. در صورتی که سؤالی دارید، می‌توانید آن را از طریق دیدگاه‌ها با ما در میان بگذارید.

فیلتر سفارشات ووکامرس براساس نقش‌های کاربران در وردپرس

منبع : jeroensormani

۴.۸/۵ - (۷۵ امتیاز)
افزونه پیامک حرفه‌ای ووکامرس Persian Woocommerce SMS

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *