【问题标题】:WooCommerce make Categories column sortable on Product admin pageWooCommerce 使产品管理页面上的类别列可排序
【发布时间】:2022-01-24 21:01:23
【问题描述】:

我想让类别列在此处的产品管理页面上可排序:

/wp-admin/edit.php?post_type=product

我真的很难弄清楚这一点......关于如何做到这一点的信息并不多!

仅仅添加 add_filter manage_edit-product_sortable_columns 是不够的。

请参阅下面的答案以获取解决方案。

【问题讨论】:

    标签: woocommerce


    【解决方案1】:

    我们要做的第一件事是使用过滤器 manage_edit-product_sortable_columns 使列顶部的类别标题可单击以进行排序

    然后我们需要使用过滤器posts_clauses 对列中的类别进行实际排序。这实际上非常复杂,此链接帖子中的答案非常有帮助(代码基本上是复制并粘贴了一些更改):Make Featured column sortable in Woocommerce admin products list

    // make header of column clickable for sort
    add_filter('manage_edit-product_sortable_columns', 'abcxyz_sortable_product_columns_header');
    function abcxyz_sortable_product_columns_header( $sortable_columns ) {
        $sortable_columns['product_cat'] = 'product_cat';
        return $sortable_columns;
    }
    
    // sort the categories column when clicked
    add_filter('posts_clauses', 'abcxyz_sortable_product_column_product_cat', 11, 2 );
    function abcxyz_sortable_product_column_product_cat( $clauses, $wp_query ) {
        global $wpdb;
        $taxonomy  = 'product_cat';
        $term      = 'product_cat';
        if ( isset( $wp_query->query['orderby'] ) && $term == $wp_query->query['orderby'] ) {
            $clauses['join'] .=<<<SQL
    LEFT OUTER JOIN {$wpdb->term_relationships} ON {$wpdb->posts}.ID={$wpdb->term_relationships}.object_id
    LEFT OUTER JOIN {$wpdb->term_taxonomy} USING (term_taxonomy_id)
    LEFT OUTER JOIN {$wpdb->terms} USING (term_id)
    SQL;
            $clauses['where']   .= " AND (taxonomy = '{$taxonomy}' OR taxonomy IS NULL)";
            $clauses['groupby']  = "object_id";
            $clauses['orderby']  = "GROUP_CONCAT({$wpdb->terms}.name ORDER BY name ASC) ";
            $clauses['orderby'] .= ( 'ASC' == strtoupper( $wp_query->get('order') ) ) ? 'ASC' : 'DESC';
        }
        return $clauses;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-07
      • 2019-06-23
      • 2021-07-05
      • 1970-01-01
      • 2014-11-11
      • 2018-07-07
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多