[Plugin: Event] Adding sortable custom columns to admin screen
-
This plugin is currently showing the custom column event_date just fine but I’d like to be able to sort it on the WordPress admin back-end like the other columns that already exist, (Title and Date).
This is for the custom post type event. I thought this could be handled with the add_filter for manage_custom-post-type_sortable_columns function. What am I missing?
<?php /** * Plugin Name: Event * Description: Event Schedule. * Version: latest * Author: Infoway * Author URI: http://URI_Of_The_Plugin_Author * License: GPL2 */ ?> <?php ob_start(); global $table_prefix; define('EVENT_PLUGIN_PATH', dirname(__FILE__)); define('EVENT_PLUGIN_URL', plugin_dir_url(__FILE__)); define('EVENT', 'event'); define('EVENT_CAT', 'event_cat'); /*TBL Define*/ define('LOCATION_TBL', $table_prefix.'location'); register_activation_hook(__FILE__, 'event_actvation'); add_filter('manage_'.EVENT.'_posts_columns', 'custom_column_name_func',10,2); add_action( 'manage_'.EVENT.'_posts_custom_column' , 'custom_column_value_func', 10, 2 ); function custom_column_name_func($columns) { unset($columns['date']); $columns['event_date'] = 'Event Date'; $columns['date'] = 'Date'; return $columns; } function custom_column_value_func($columns,$post_id){ $event_date = get_post_meta($post_id, '_ev_start_date', true); switch ( $columns ) { case 'event_date': echo date('F j, Y', $event_date); break; } } function custom_column_sort($columns) { $custom = array( 'Event Date' => 'event_date' ); return wp_parse_args($custom, $columns); } add_filter("manage_'.EVENT.'_sortable_columns", 'custom_column_sort'); function custom_column_orderby( $vars ) { if ( isset( $vars['orderby'] ) && 'event_date' == $vars['orderby'] ) { $vars = array_merge( $vars, array( 'meta_key' => 'event_date', 'orderby' => 'meta_value' ) ); } return $vars; } add_filter( 'request', 'custom_column_orderby' );
The topic ‘[Plugin: Event] Adding sortable custom columns to admin screen’ is closed to new replies.