我有一个名为knowledgebase的自定义分类法,我修改了自定义分类法,使其具有“类别顺序”字段。这样就可以在前端根据它进行订购。
现在我已经设置好可以对该列进行排序(我已经在category表中添加了该列)。对于排序,我必须使用
/**
* Custom column sortable query
*
* @param array $pieces Terms query SQL clauses.
* @param array $taxonomies An array of taxonomies.
* @param array $args An array of terms query arguments.
* @return array Modified query array
* @since 1.0.0
*/
add_filter( \'terms_clauses\', \'mytheme_filter_custom_terms\', 10, 3 );
if ( ! function_exists( \'mytheme_filter_custom_terms\' ) ) {
function mytheme_filter_custom_terms( $pieces, $taxonomies, $args ) {
global $wpdb;
$orderby = isset( $_REQUEST[\'orderby\'] ) ? trim( wp_unslash( $_REQUEST[\'orderby\'] ) ) : \'cat_order\';
if ( \'cat_order\' === $orderby ) {
$pieces[\'fields\'] .= \', tm.*\';
$pieces[\'join\'] .= \' INNER JOIN \'.$wpdb->termmeta.\' AS tm ON tt.term_id = tm.term_id\';
$pieces[\'orderby\'] = \'ORDER BY ABS(tm.meta_value)\';
}
return $pieces ;
}
}
虽然这起作用,但它导致菜单不起作用。我没有看到管理位置,无法将菜单分配给我的主题中可用的任何主题位置。知道为什么会这样吗?菜单是否使用terms_clauses
钩