В моем случае я должен разрешить пользователям-администраторам просматривать заказы и подписки клиентов, принадлежащих определенному местоположению.Моя ключевая цель - разрешить пользователю-администратору A (принадлежащему к определенному местоположению, такому как Location-A) просматривать заказы / подписки клиентов, которые отправили заказы / подписки из этого конкретного местоположения, то есть Location-A.Я использовал настраиваемое поле и назвал его компанией с типом Выбор на стороне пользователя, чтобы назначить компанию на основе местоположения для пользователей-администраторов.
Клиенты отправляют свои заказы / подписки на услуги в зависимости от их географического местоположения, иих заказы / подписки присваиваются определенной ветви (в данном случае администраторам) с правами для управления заказами / подписками этого конкретного местоположения.Никакой другой пользователь-администратор не может просматривать заказы / подписки в другом месте.то есть заказы Location-A будут видны только пользователю-A, а заказы Location-B будут видны только пользователю-B.Администратор может просматривать все заказы.Я использовал следующий код и работает нормально.
function company_filter_orders($query) {
global $post_type;
$customers = array();
if($post_type === 'shop_order' || $post_type === 'shop_subscription')
{
$curr_user_id = get_current_user_id();
// the value is 0 if the user isn't logged-in
if ( $curr_user_id != 0 ) {
// we know now the user is logged-in, so we can use his/her ID to get the user meta
$um_value = get_user_meta( $curr_user_id, 'company', true );
// now we check if the value is correct
if ( ! empty( $um_value ) ){
// now we get all the users whose company matches meta_value
//echo 'user meta has the value';
$members = get_users(array(
'meta_key' => 'company',
'meta_value' => $um_value,
)
);
//build an array of company users/customers only
foreach( $members as $usr ) {
$customers[] = $usr->ID;
}
}
}
if(count($customers) > 0)
{ //set meta query to match customer id with above setup array of customers
$query->set( 'meta_query', array(
array(
'key' => '_customer_user',
'value' => $customers, //pass array of customers to fetch orders/subscriptions for those customers only
'compare' => 'In',
'type' => 'numeric'
)
));
}
}
return $query;
}
add_filter('pre_get_posts', 'company_filter_orders');
Теперь я хочу включить множественный выбор в настраиваемом поле «Выбор», чтобы пользователи-администраторы могли выбирать несколько мест, чтобы они могли просматривать заказы / подписки.клиентов, полученных из двух или более разных мест.Мне также интересно, как WordPress будет сохранять несколько компаний / мест для администратора в базе данных.Если он будет сохранен как массив JSON, то как я могу выбрать заказы / подписки в двух разных местах / компаниях и показать их вошедшему в систему пользователю.Я пробовал разные методы, но в моем случае ничего не работает.Пожалуйста, совет.