示例#1
0
/**
 * Sortable taxonomy columns
 * Credit: http://scribu.net/wordpress/sortable-taxonomy-columns.html
 * Modified to suit our purpose
 * Allows us to sort the gallery listing by 
 * Slightly modified to fit our purpose
 * 
 * @global type $wpdb
 * @param type $clauses
 * @param type $wp_query
 * @return type
 */
function mpp_taxonomy_filter_clauses($clauses, $wp_query)
{
    //only apply if we are on the mpp gallery list screen
    if (!mpp_admin_is_gallery_list()) {
        return $clauses;
    }
    if (!isset($wp_query->query['orderby'])) {
        return $clauses;
    }
    $order_by = $wp_query->query['orderby'];
    $order_by_tax = mpp_translate_to_taxonomy($order_by);
    if (!$order_by_tax || !in_array($order_by, array('component', 'status', 'type'))) {
        return $clauses;
    }
    global $wpdb;
    //if we are here, It is for one of our taxonomy
    $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'] .= $wpdb->prepare(" AND (taxonomy = %s OR taxonomy IS NULL)", $order_by_tax);
    $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;
}
 public function sort_list(WP_Query $query)
 {
     if (!mpp_admin_is_gallery_list()) {
         return;
     }
     //check if the post type
     if (!$query->is_main_query() || $query->get('post_type') != mpp_get_gallery_post_type()) {
         return;
     }
     //if we are here, we may need to sort
     $orderby = isset($_REQUEST['orderby']) ? $_REQUEST['orderby'] : '';
     $sort_order = isset($_REQUEST['order']) ? $_REQUEST['order'] : '';
     if (!$orderby || !$sort_order) {
         return;
     }
     if ($orderby == 'user_id') {
         $query->set('orderby', 'author');
     } elseif ($orderby == 'media_count') {
         $query->set('meta_key', '_mpp_media_count');
         $query->set('orderby', 'meta_value_num');
     }
     $query->set('order', $sort_order);
 }
    public function add_inline_css()
    {
        //hide the Add New action link in the gallery list
        if (!mpp_admin_is_gallery_list()) {
            return;
        }
        ?>
		<style type="text/css">
			body.post-type-mpp-gallery .page-title-action {
				display: none;
			}

		</style>
	<?php 
    }