Utilisation de « terminé » l'état des commandes pour les commandes payées est correct
est ici une fonction personnalisée avec une requête SQL, que la sortie de la volonté d'un tableau en forme d'ID de l'utilisateur avec leurs commandes complétées (payé/accepté):
function completed_orders_ids_by_costumer_id(){
global $wpdb;
$query = $wpdb->get_results("
SELECT pm.meta_value AS user_id, pm.post_id AS order_id
FROM {$wpdb->prefix}postmeta AS pm
LEFT JOIN {$wpdb->prefix}posts AS p
ON pm.post_id = p.ID
WHERE p.post_type = 'shop_order'
AND p.post_status = 'wc-completed'
AND pm.meta_key = '_customer_user'
ORDER BY pm.meta_value ASC, pm.post_id DESC
");
// We format the array by user ID
foreach($query as $result)
$results[$result->user_id][] = $result->order_id;
return $results;
}
code va dans le fichier function.php de votre thème enfant actif (ou le thème) ou encore dans un fichier de plug-in.
Testé et fonctionne.
Exemple d'utilisationjuste pour un test pour voir les données en sortie brutes
echo '<pre>'; print_r(completed_orders_ids_by_costumer_id()); echo '</pre>';
Vous obtiendrez quelque chose comme:
Array
(
[9] => Array
(
[0] => 505
[0] => 497
)
[12] => Array
(
[0] => 626
[1] => 584
[2] => 483
)
[15] => Array
(
[0] => 614
[1] => 598
)
[17] => Array
(
[0] => 634
)
…/… and so on …
)
maintenant à wp_postmeta
tableau vous aussi quelques autres clés méta liées à commandes payées que vous pouvez utiliser:
• '_paid_date'
• '_date_paid'
• '_date_completed'
• '_completed_date'
Mais le ciblage "terminé" l'état des commandes est juste bien
U chanter que d'autres énumérés clés meta, vous pouvez faire votre requête SQL (qui peut remplacer notre première requête dans la fonction):
$query = $wpdb->get_results("
SELECT DISTINCT pm.meta_value AS user_id, pm.post_id AS order_id
FROM {$wpdb->prefix}postmeta AS pm
LEFT JOIN {$wpdb->prefix}posts AS p
ON pm.post_id = p.ID
LEFT JOIN {$wpdb->prefix}postmeta AS pm2
ON p.ID = pm2.post_id
WHERE p.post_type = 'shop_order'
AND pm.meta_key = '_customer_user'
AND pm2.meta_key IN ('_paid_date', '_paid_date', '_date_completed', '_completed_date')
AND pm2.meta_value != ''
ORDER BY pm.meta_value ASC, pm.post_id DESC
");
testé et fonctionne aussi ...