Fany_VanDaal icon

Počet prodaných kusů

Fany_VanDaal | PRO | 04/09/25 09:08:54 AM UTC (Edited) | 0 ⭐ | 10445 👁️ | Never ⏰ | []
PHP |

2.53 KB

|

None

|

0 👍

/

0 👎

// Přidání sloupce "Prodáno kusů"
add_filter('manage_edit-product_columns', 'custom_product_sold_column');
function custom_product_sold_column($columns) {
    $columns['total_sold'] = __('Prodáno kusů', 'woocommerce');
    return $columns;
}
 
// Výpis obsahu sloupce s barevným rozlišením
add_action('manage_product_posts_custom_column', 'custom_product_sold_column_content', 10, 2);
function custom_product_sold_column_content($column, $post_id) {
    if ($column === 'total_sold') {
        $product = wc_get_product($post_id);
        
        // Získání počtu prodaných kusů
        if ($product && $product->is_type('variable')) {
            $total_sold = 0;
            foreach ($product->get_children() as $variation_id) {
                $variation = wc_get_product($variation_id);
                $total_sold += (int) $variation->get_total_sales();
            }
        } else {
            $total_sold = (int) $product->get_total_sales();
        }
        
        // Nastavení barvy textu
        $color = 'black'; // defaultní barva
        if ($total_sold === 0) {
            $color = 'red'; // žádný kus prodán, červená
        }
 
        // Získání nejprodávanějšího produktu
        global $wpdb;
        $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");
 
        // Pokud je aktuální produkt tím nejprodávanějším, nastavíme zelenou barvu
        if ($post_id == $most_sold_product) {
            $color = 'green';
        }
 
        // Zobrazení počtu prodaných kusů s nastavenou barvou
        echo '<span style="color:' . esc_attr($color) . ';">' . esc_html($total_sold) . '</span>';
    }
}
 
// Označení sloupce jako řaditelného
add_filter('manage_edit-product_sortable_columns', 'custom_product_sold_column_sortable');
function custom_product_sold_column_sortable($columns) {
    $columns['total_sold'] = 'total_sales';
    return $columns;
}
 
// Přizpůsobení dotazu pro řazení podle počtu prodaných
add_action('pre_get_posts', 'custom_product_sold_orderby');
function custom_product_sold_orderby($query) {
    if (!is_admin() || !$query->is_main_query()) {
        return;
    }
 
    // Ověření správného řazení ve správné tabulce
    if ($query->get('post_type') === 'product' && $query->get('orderby') === 'total_sales') {
        $query->set('meta_key', 'total_sales');
        $query->set('orderby', 'meta_value_num');
    }
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎