افراد زیادی هستند که از ووکامرس برای فروش محصولاتشان به مشتریان و عمده فروشان استفاده میکنند. اگر این افراد بخواهند سفارشات ووکامرس را براساس هر نقش فیلتر و مشاهده کنند، به صورت پیشفرض هیچ راه حلی وجود ندارد. ما در این نوشته به شما نحوه فیلتر سفارشهای ووکامرس براساس نقش کاربر را آموزش میدهیم.
مشاهده سفارشهای ووکامرس براساس نقش کاربر
قطعه کد زیر سفارشات ووکامرس را براساس نقش کاربر فیلتر خواهد کرد. در واقع این قطعه کد یک لیست کشویی شامل همه نقشهای موجود در برگه سفارشات پیشخوان وردپرس ایجاد خواهد کرد و مدیر فروشگاه میتواند با انتخاب هر نقش، سفارشاتی که توسط کاربران آن نقش ایجاد شده را مشاهده کند.
نکته: به منظور استفاده از کد، پیشنهاد میشود آن را در افزونه اختصاصیتان یا در فایل 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