Sortiere benutzerdefinierte Postspalte sortierbar

Ich habe eine benutzerdefinierte Spalte, die einen post_meta-Wert für jeden Post im Post-List-Bildschirm auflistet. Ich konnte nur Informationen darüber finden, wie ein benutzerdefinierter Posttyp sortierbar gemacht werden kann. Wie mache ich das sortierbar? Danke im Voraus.

add_filter('manage_posts_columns' , 'ws_add_manufacturer_column'); function ws_add_manufacturer_column($defaults){ $defaults['manufacturer'] = 'Manufacturer'; return $defaults; } add_action('manage_posts_custom_column', 'ws_add_manufacturer_content', 10, 2); function ws_add_manufacturer_content($column_name, $post_ID) { if ($column_name == 'manufacturer') { $manufacturer_name = get_post_meta( $post_ID, 'wccaf_manufacturer', true ); if ($manufacturer_name) { echo $manufacturer_name; } } } 

Solutions Collecting From Web of "Sortiere benutzerdefinierte Postspalte sortierbar"

Sie benötigen zwei zusätzliche functionen.

Der erste, der die sortierbaren Spalten in den Filter manage_edit-{post_type}_sortable_columns

 function ws_sortable_manufacturer_column( $columns ) { $columns['manufacturer'] = 'Manufacturer'; return $columns; } add_filter( 'manage_edit-post_sortable_columns', 'ws_sortable_manufacturer_column' ); 

und der zweite Haken in pre_get_posts , um die Abfrage zu manipulieren, um nach der Spalte zu sortieren …

 function ws_orderby_custom_column( $query ) { global $pagenow; if ( ! is_admin() || 'edit.php' != $pagenow || ! $query->is_main_query() || 'post' != $query->get( 'post_type' ) ) { return; } $orderby = $query->get( 'orderby' ); switch ( $orderby ) { case 'manufacturer': $query->set( 'meta_key', 'wccaf_manufacturer' ); $query->set( 'orderby', 'meta_value' ); break; default: break; } } add_action( 'pre_get_posts', 'ws_orderby_custom_column' ); 

Ich hoffe, das hilft