Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 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');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement