it-swarm.com.de

Benutzerdefinierter Beitragstyp 'orderby' => 'meta_value' funktioniert nicht

Ich habe einen benutzerdefinierten Beitragstyp namens "Mitglied". Ich habe meiner Datei "functions.php" Code hinzugefügt, um ein paar benutzerdefinierte Spaltenüberschriften (die funktionieren) für "Vorname" und "Nachname" und "Mitgliedstyp" hinzuzufügen, aber ich kann die Standardspalte "post_title" nicht abrufen sortieren von AZ. Ich bin mir sicher, dass es etwas mit title vs post_title oder so zu tun hat, aber das ist neu für mich. Was mache ich falsch?

/*add custom columns to the member post type*/
add_filter( 'manage_edit-member_columns', 'my_edit_member_columns' );

function my_edit_member_columns( $columns ) {

    $columns = array(
        'cb' => '<input type="checkbox" />',
        'title' => __( 'Member' ),
        'first_name' => __( 'First' ),
        'last_name' => __( 'Last' ),
        'member_type' => __( 'Member Type' ),
        'date' => __( 'Date' )
    );

    return $columns;
}

/*add hooks to add content to the columns*/
add_action( 'manage_member_posts_custom_column', 'my_manage_member_columns', 10, 2 );

function my_manage_member_columns( $column, $post_id ) {
    global $post;

    switch( $column ) {

        /* If displaying the 'first name' column. */
        case 'first_name' :

            /* Get the post meta. */
            $first_name = get_post_meta( $post_id, 'first_name', true );

            /* If no first_name is found, output a default message. */
            if ( empty( $first_name ) )
                echo ( 'Unknown' );
            else
                printf( $first_name );
            break;

        /* If displaying the 'last_name' column. */
        case 'last_name' :

            /* Get the post meta. */
            $last_name = get_post_meta( $post_id, 'last_name', true );

            /* If no first_name is found, output a default message. */
            if ( empty( $last_name ) )
                echo ( 'Unknown' );
            else
                printf( $last_name );
            break;

        /* If displaying the 'member_type' column. */
        case 'member_type' :

            /* Get the post meta. */
            $member_type = get_post_meta( $post_id, 'member_type', true );

            /* If no first_name is found, output a default message. */
            if ( empty( $member_type ) )
                echo ( 'Unknown' );
            else
                printf( $member_type );
            break;
        /* Just break out of the switch statement for everything else. */
        default :
            break;
    }
}

//make the title sortable
add_filter( 'manage_edit-member_sortable_columns', 'my_member_sortable_columns' );

function my_member_sortable_columns( $columns ) {

    $columns['post_title'] = 'post_title';

    return $columns;
}

// now do the sorting of the member post type
// Only run our customization on the 'edit.php' page in the admin.
add_action( 'load-edit.php', 'my_edit_member_load' );

function my_edit_member_load() {
    add_filter( 'request', 'my_sort_member' );
}

/* Sorts the member. */
function my_sort_member( $vars ) {

    /* Check if we're viewing the 'member' post type. */
    if ( isset( $vars['post_type'] ) && 'member' == $vars['post_type'] ) {

        /* Check if 'orderby' is set to 'title'. */
        if ( isset( $vars['orderby'] ) && 'post_title' == $vars['orderby'] ) {

            /* Merge the query vars with our custom variables. */
            $vars = array_merge(
                $vars,
                array(
                    'meta_key' => 'post_title',
                    'orderby' => 'meta_value', /*use meta_value_num if the meta_key is numeric*/
                    'order' => 'asc'
                )
            );
        }
    }

    return $vars;
}
1
Renshi

Der Titel des Posts ist kein Metadaten, sondern befindet sich in der Hauptpost-Tabelle. Sie können nach Titel bestellen mit:

'orderby' => 'title'

Sie würden einen Metaschlüssel/eine Reihenfolge nach Metawert angeben, wenn das Feld benutzerdefinierte Daten wären, die in der Post-Metatabelle gespeichert sind.

2
Milo