Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*-----------------------------------------------------------------------------------*/
- /* Sortable columns for admin knowledge base section
- /*-----------------------------------------------------------------------------------*/
- // Register the new columns as sortable
- function kbcategory_column_register_sortable( $columns ) {
- $columns['meta_views'] = 'Views';
- $columns['taxonomy_category'] = 'kbcategory';
- $columns['taxonomy_related_products'] = 'relatedproducts';
- return $columns;
- }
- add_filter( 'manage_edit-knowledge-base_sortable_columns', 'kbcategory_column_register_sortable' );
- // Tell Wordpress how to sort the new column 'Views'
- function views_column_orderby( $vars ) {
- if ( isset( $vars['orderby'] ) && 'Views' == $vars['orderby'] ) {
- $vars = array_merge( $vars, array(
- 'meta_key' => 'Views',
- 'orderby' => 'meta_value_num'
- ) );
- }
- return $vars;
- }
- add_filter( 'request', 'views_column_orderby' );
- // Tell Wordpress how to sort the new column 'Category'
- function kbcategory_clauses( $clauses, $wp_query ) {
- global $wpdb;
- if ( isset( $wp_query->query['orderby'] ) && 'kbcategory' == $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 = 'kbcategory' 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;
- }
- add_filter( 'posts_clauses', 'kbcategory_clauses', 10, 2 );
- // Tell Wordpress how to sort the new column 'Related Products'
- function relatedproducts_clauses( $clauses, $wp_query ) {
- global $wpdb;
- if ( isset( $wp_query->query['orderby'] ) && 'relatedproducts' == $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 = 'relatedproducts' 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;
- }
- add_filter( 'posts_clauses', 'relatedproducts_clauses', 10, 2 );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement