J'ai besoin d'exécuter des fonctions/filtres pour des rôles d'utilisateur spécifiques. Ce code filtre la page de commande de l'administrateur (Woocommerce) pour afficher uniquement les commandes libellées en GBP.
add_filter('request', function($vars) {
global $typenow, $wpdb;
// Add logic to determine if the orders list should be filtered, and which
// currency
$currency = 'GBP';
if($typenow == 'shop_order') {
$vars['meta_query']['relation'] = 'AND';
// Only show orders in the specific currency
$vars['meta_query'] = array(
array(
'key' => '_order_currency',
'value' => $currency,
'compare' => '=',
),
);
}
return $vars;
}, 15 );
Cela fonctionne comme prévu. Ce que je dois faire, c'est que ce code ne soit exécuté que pour certains rôles. Le rôle dont j'ai besoin pour le déclencher est uk_staff
. J'ai ensuite besoin de créer la même chose à l'exception de $currency = 'AUD';
et du rôle au_staff
.
Quelqu'un peut-il m'aider à rendre cette fonction uniquement activée pour certains rôles?
Le noyau a des fonctions telles que current_user_can
pour vérifier la capacité d’un rôle ou vérifier le rôle directement. L'exemple suivant étend votre source pour cette vérification afin que la fonction non (!
) soit exécutée, si l'utilisateur actuel n'a pas les droits, la capacité de son rôle.
add_filter('request', function( $vars ) {
// Check the capability of the current user.
if ( ! current_user_can( 'manage_options' ) )
return;
global $typenow, $wpdb;
// Add logic to determine if the orders list should be filtered, and which
// currency
$currency = 'GBP';
if($typenow == 'shop_order') {
$vars['meta_query']['relation'] = 'AND';
// Only show orders in the specific currency
$vars['meta_query'] = array(
array(
'key' => '_order_currency',
'value' => $currency,
'compare' => '=',
),
);
}
return $vars;
}, 15 );