Advertisement
Fany_VanDaal

Počet prodaných kusů

Apr 9th, 2025 (edited)
479
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.53 KB | None | 0 0
  1. // Přidání sloupce "Prodáno kusů"
  2. add_filter('manage_edit-product_columns', 'custom_product_sold_column');
  3. function custom_product_sold_column($columns) {
  4.     $columns['total_sold'] = __('Prodáno kusů', 'woocommerce');
  5.     return $columns;
  6. }
  7.  
  8. // Výpis obsahu sloupce s barevným rozlišením
  9. add_action('manage_product_posts_custom_column', 'custom_product_sold_column_content', 10, 2);
  10. function custom_product_sold_column_content($column, $post_id) {
  11.     if ($column === 'total_sold') {
  12.         $product = wc_get_product($post_id);
  13.        
  14.         // Získání počtu prodaných kusů
  15.         if ($product && $product->is_type('variable')) {
  16.             $total_sold = 0;
  17.             foreach ($product->get_children() as $variation_id) {
  18.                 $variation = wc_get_product($variation_id);
  19.                 $total_sold += (int) $variation->get_total_sales();
  20.             }
  21.         } else {
  22.             $total_sold = (int) $product->get_total_sales();
  23.         }
  24.        
  25.         // Nastavení barvy textu
  26.         $color = 'black'; // defaultní barva
  27.         if ($total_sold === 0) {
  28.             $color = 'red'; // žádný kus prodán, červená
  29.         }
  30.  
  31.         // Získání nejprodávanějšího produktu
  32.         global $wpdb;
  33.         $most_sold_product = $wpdb->get_var("SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_key = '_stock_status' ORDER BY meta_value_num DESC LIMIT 1");
  34.  
  35.         // Pokud je aktuální produkt tím nejprodávanějším, nastavíme zelenou barvu
  36.         if ($post_id == $most_sold_product) {
  37.             $color = 'green';
  38.         }
  39.  
  40.         // Zobrazení počtu prodaných kusů s nastavenou barvou
  41.         echo '<span style="color:' . esc_attr($color) . ';">' . esc_html($total_sold) . '</span>';
  42.     }
  43. }
  44.  
  45. // Označení sloupce jako řaditelného
  46. add_filter('manage_edit-product_sortable_columns', 'custom_product_sold_column_sortable');
  47. function custom_product_sold_column_sortable($columns) {
  48.     $columns['total_sold'] = 'total_sales';
  49.     return $columns;
  50. }
  51.  
  52. // Přizpůsobení dotazu pro řazení podle počtu prodaných
  53. add_action('pre_get_posts', 'custom_product_sold_orderby');
  54. function custom_product_sold_orderby($query) {
  55.     if (!is_admin() || !$query->is_main_query()) {
  56.         return;
  57.     }
  58.  
  59.     // Ověření správného řazení ve správné tabulce
  60.     if ($query->get('post_type') === 'product' && $query->get('orderby') === 'total_sales') {
  61.         $query->set('meta_key', 'total_sales');
  62.         $query->set('orderby', 'meta_value_num');
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement