Woocommerce - 对自定义产品类别元进行排序

问题描述 投票:0回答:1

我想对为产品类别创建的自定义元内容进行排序。内容通常是文本。我的目标是对空的进行排序,以便轻松检测到它们。如果有文本,可以优先考虑字母长度。我无法使用以下代码进行任何更改。谢谢。

function list_fill( $columns, $column, $id ) {
if ( $column = 'my_custom_column' ) {
        $columns = esc_html( get_term_meta($id, '_my_custom_data', true) );
    }
    return $columns;
}
add_action( 'manage_product_cat_custom_column', 'list_fill' , 10, 3);

function sortlist( $columns ) {
    $columns['my_custom_column'] = 'my_custom_column';
    return $columns;
}
add_filter( 'manage_edit-product_cat_sortable_columns', 'sortlist' ); 

function sortlist_orderby( $query ) {  

    $orderby = $query->get( 'orderby');  

    if( 'my_custom_column' == $orderby ) {  
        $query->set('meta_key','_my_custom_data');  
        $query->set('orderby','meta_value');  
    }  
} 
add_action( 'pre_get_posts', 'sortlist_orderby' ); 
php woocommerce
1个回答
1
投票

这就是我通常注册新专栏的方式。

// Add New column
function my_add_new_columns($columns) {
    $new_columns = array(
        'my_custom_column' => esc_html__( 'Custom Column', 'text_domain' ),
    );
    return array_merge($columns,$new_columns);
}
add_filter( 'manage_edit-product_cat_columns',  'my_add_new_columns',10,1 );

代码的其余部分应该没问题,但以防万一这里是我如何注册列、填充值和排序的完整示例。

// Add New column
function my_add_new_columns($columns) {
    $new_columns = array(
        'custom_column' => esc_html__( 'Custom Column', 'text_domain' ),
    );
    return array_merge($columns,$new_columns);
}
add_filter( 'manage_edit-product_cat_columns',  'my_add_new_columns',10,1 );

// Add data to sort
function custom_column_data($argument, $columnName, $termID) {
    if ( $columnName == 'custom_column' ) {
        echo get_term_meta( $termID, '_product_cat_thumb', true );
    }
}
add_action('manage_product_cat_custom_column','custom_column_data',10,3);


//Make column sortable
function custom_sortable_column() {
    $columns['custom_column'] = 'custom_column';
    return $columns;
}
add_filter( 'manage_edit-product_cat_sortable_columns', 'custom_sortable_column' );

//Config how your sorting should work
function custom_column_orderby($query) {
    $orderby = $query->get( 'orderby' );
    if ( 'custom_column' == $orderby ) {
        $query->set('meta_key','_product_cat_thumb');  
        $query->set('orderby','meta_value');  
    }
}
add_action( 'pre_get_posts', 'custom_column_orderby' ); 
© www.soinside.com 2019 - 2024. All rights reserved.