Sortieren von benutzerdefinierten Beitragstypen in edit.php: Beitrag verschwindet

Ich habe ein paar benutzerdefinierte Post-Typen mit verschiedenen Taxonomien und ich habe eine function, die bestimmte Kategorien zu Post-List-Ansicht in edit.php Admin-Bildschirm hinzufügt. Alles gut dort. Ich habe auch eine function hinzugefügt, die es dem Benutzer erlaubt, nach diesen Kategorien zu sortieren. Hier laufen die Dinge schief. Wenn Sie nach Namen oder Datum sortieren, ist alles in Ordnung, aber wenn Sie nach den benutzerdefinierten Kategorien sortieren, verschwinden alle Beiträge und ich kann nicht herausfinden warum.

Hier ist der Code durch die benutzerdefinierte Post-Typ-Registrierung zurück. Der betreffende Code ist der allerletzte Block, aber ich dachte mir, dass die Leute das Ganze im Kontext sehen müssen

// Add custom post type Artists add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'band_artists', array( 'labels' => array( 'name' => __( 'Artists' ), 'singular_name' => __( 'Artist' ), 'add_new' => __( 'Add New','Artist' ), 'add_new_item' => __( 'Add New Artist' ), 'edit_item' => __( 'Edit Artist' ), 'new_item' => __( 'New Artist' ), 'view_item' => __( 'View Artist' ), 'search_items' => __( 'Search Artists' ), 'not_found' => __( 'No Artists Found' ), 'not_found_in_trash' => __( 'No Artists In Trash' ), 'parent_item_colon' => '' ), 'public' => true, 'has_archive' => true, 'supports' => array( 'title', 'editor', 'comments', 'excerpt', 'custom-fields', 'thumbnail' ), 'rewrite' => array('slug' => 'artists'), 'taxonomies' => array('category', 'post_tag') ) ); register_taxonomy('large_feature', array('band_artists'), array('hierarchical' => true, 'label' => 'Large Feature', 'rewrite' => false)); register_taxonomy('small_feature', array('band_artists'), array('hierarchical' => true, 'label' => 'Small Feature', 'rewrite' => false)); } // Add custom taxonomies to Admin "Post List" Page add_filter( 'manage_edit-band_artists_columns', 'my_edit_band_artists_columns' ) ; function my_edit_band_artists_columns( $columns ) { $columns = array( 'cb' => '', 'title' => __( 'Artists' ), 'large_feature' => __( 'Large Feature' ), 'small_feature' => __( 'Small Feature' ), 'date' => __( 'Date' ) ); return $columns; } // Make those columns display data add_action( 'manage_band_artists_posts_custom_column', 'my_manage_band_artists_columns', 10, 2 ); function my_manage_band_artists_columns( $column, $post_id ) { global $post; switch( $column ) { case 'large_feature' : $terms = get_the_terms( $post_id, 'large_feature' ); if ( !empty( $terms ) ) { $out = array(); foreach ( $terms as $term ) { $out[] = sprintf( 'https://wordpress.stackexchange.com/questions/72080/sorting-custom-post-types-in-edit-php-post-disappear/%s', esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'large_feature' => $term->slug ), 'edit.php' ) ), esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, 'large_feature', 'display' ) ) ); } echo join( ', ', $out ); } else { _e( '' ); } break; case 'small_feature' : $terms = get_the_terms( $post_id, 'small_feature' ); if ( !empty( $terms ) ) { $out = array(); foreach ( $terms as $term ) { $out[] = sprintf( 'https://wordpress.stackexchange.com/questions/72080/sorting-custom-post-types-in-edit-php-post-disappear/%s', esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'small_feature' => $term->slug ), 'edit.php' ) ), esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, 'small_feature', 'display' ) ) ); } echo join( ', ', $out ); } else { _e( '' ); } break; default : break; } } // Make those columns sortable add_filter( 'manage_edit-band_artists_sortable_columns', 'my_band_artists_sortable_columns' ); function my_band_artists_sortable_columns( $columns ) { $columns['large_feature'] = 'large_feature'; return $columns; } add_action( 'load-edit.php', 'my_edit_band_artists_load' ); function my_edit_band_artists_load() { add_filter( 'request', 'my_sort_band_artistss' ); } function my_sort_band_artistss( $vars ) { if ( isset( $vars['post_type'] ) && 'band_artists' == $vars['post_type'] ) { if ( isset( $vars['orderby'] ) && 'large_feature' == $vars['orderby'] ) { $vars = array_merge( $vars, array( 'meta_key' => 'large_feature', 'orderby' => 'meta_value' ) ); } } return $vars; } 

Solutions Collecting From Web of "Sortieren von benutzerdefinierten Beitragstypen in edit.php: Beitrag verschwindet"

Das Problem ist 'meta_key' => 'large_feature', in der letzten function ist hier 'meta_key' => 'large_feature', eine Taxonomie, kein ‘meta_key’. Tatsächlich gibt es in WordPress keinen Post, der “large_feature” als “meta_key” hat. Aus diesem Grund hat WordPress keine Beiträge angezeigt.

Über das Ordnen nach Taxonomie-Begriffen lässt WordPress das nicht zu. Sie können die SQL-Abfrage jedoch direkt mit posts_orderby oder solchen Filtern anpassen, siehe http://codex.wordpress.org/Class_Reference/WP_Query#Filters