Ce code va vous permettre de créer un sous menu pour avoir des statistiques sur les ventes réalisées en fonction des pays.
En effet, vous allez pouvoir filter en fonction d’une plage de date spécifique et obtenir un tableau qui indiquera le nombre de commandes réalisées, le montant & les pays associés.
Pour faire fonctionner le plugin, il suffit d’enregistrer le code ci-dessous puis le compresser et l’envoyer dans votre site WordPress.
Josselyn jayant & WYCAN
*/
// Ajout du sous-menu dans le menu de WooCommerce
add_action('admin_menu', 'custom_order_stats_submenu');
function custom_order_stats_submenu(){
add_submenu_page('woocommerce', 'Stats par pays', 'Stats par pays', 'manage_options', 'custom-order-stats', 'custom_order_stats_page');
}
function custom_order_stats_page(){
$order_statuses = wc_get_order_statuses();
$selected_status = isset($_POST['order_status']) ? $_POST['order_status'] : '';
?>
Statistiques de commande par pays
prepare(" AND p.post_status = %s ", $order_status);
}
$sql = $wpdb->prepare("
SELECT pm.meta_value AS country_code,
COUNT(p.ID) AS order_count,
SUM(meta_total.meta_value) AS total_amount
FROM {$wpdb->posts} p
JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id
LEFT JOIN {$wpdb->postmeta} meta_total ON p.ID = meta_total.post_id AND meta_total.meta_key = '_order_total'
WHERE p.post_type = 'shop_order'
AND p.post_date BETWEEN %s AND %s " .
$status_condition . "
AND pm.meta_key = '_billing_country'
GROUP BY pm.meta_value
ORDER BY order_count DESC", $start_date, $end_date);
$results = $wpdb->get_results($sql);
$countries = WC()->countries->countries;
$grand_total = 0; // Variable pour accumuler le montant total
$total_orders = 0; // Variable pour accumuler le nombre total de commandes
if($results){
echo ' ';
echo 'Pays Nombre de commandes Montant total ';
foreach($results as $row){
$country_name = isset($countries[$row->country_code]) ? $countries[$row->country_code] : $row->country_code;
$grand_total += floatval($row->total_amount); // Ajouter le montant au total global
$total_orders += intval($row->order_count); // Ajouter le nombre de commandes au total global
echo '' . $country_name . ' ' . $row->order_count . ' ' . wc_price($row->total_amount) . ' ';
}
echo '
';
// Affichage du montant total accumulé
echo 'Montant total pour la période sélectionnée : ' . wc_price($grand_total) . '
';
// Affichage du nombre total de commandes accumulé
echo 'Nombre total de commandes pour la période sélectionnée : ' . $total_orders . '
';
} else {
echo 'Aucune commande trouvée pour cette période et cet état de commande.
';
}
}