对“Pages”仪表板中的列进行排序概述

时间:2018-05-13 作者:user1660874

我想按“标题”或自定义列(“层次结构”)在“页面”仪表板中按字母顺序排列页面。基本上,所有页面都分配了一个层次代码(1、1.1、1.1.01、1.1.02等)。当我单击“层次”排序按钮时,结果不正确。

有人能给我一个提示或给我指出讨论这个问题的资源吗?下面列出了我的代码。

enter image description here

// (Works.) Make custom columns \'prod-hierar\' and \'slug\' sortable
add_filter( \'manage_edit-page_sortable_columns\', \'wms_sort_cust_cols\', 10, 2 );

function wms_sort_cust_cols( $col ) {
    // Make column \'hierarchy\' sortable ie add sorting icon

    $col[ \'hierarchy\' ] = \'prod_hierar\';

    return  $col;
}


// (Does not work.) Order column \'hierarchy\' alphabetically via meta_key \'prod_hier\'.
add_filter( \'request\', \'wms_hierarchy_col_orderby\' );

function wms_hierarchy_col_orderby( $vars ) {
    PC::debug(\'wms_hierarchy_col_orderby() hit\');
    if ( isset( $vars[\'orderby\'] ) && \'prod_hier\' == $vars[\'orderby\'] ) {
        $vars = array_merge( $vars, array(
            \'meta_key\' => \'prod_hier\',
            \'orderby\' => \'meta_value\'

            //$query->set( \'meta_key\', \'prod_hier\' );
            //$query->set( \'orderby\', \'meta_value\' );
        ) );
    }
    return $vars;
}

1 个回复
SO网友:user1660874

我刚刚意识到代码中有一个拼写错误。元标记应为“prod\\u hierar”,而不是“prod-hier”。这解决了问题。(我想实验太多了……)。

函数“wms\\u hierarchy\\u col\\u orderby()”因此变为:

function wms_hierarchy_col_orderby( $vars ) {
    if ( isset( $vars[\'orderby\'] ) && \'prod_hierar\' == $vars[\'orderby\'] ) {
        $vars = array_merge( $vars, array(
            \'meta_key\' => \'prod_hierar\',
            \'orderby\' => \'meta_value\'
        ) );
    }
    return $vars;
}

结束