web-dev-qa-db-de.com

Festlegen des benutzerdefinierten Posttyptitels ohne Unterstützung

Also habe ich diese Frage in einem anderen Thread anders gestellt, aber es war eher eine Frage vom Typ Rat, sodass sie wirklich keine nützlichen Antworten lieferte. Ich glaube, ich kann es besser abfassen und sollte einigen von Ihnen helfen, zu entziffern, was ich zu erreichen versuche, und möglicherweise jemand anderem helfen, sobald wir an einer Lösung zusammenarbeiten.

Ich habe einen benutzerdefinierten Beitragstyp, der nur sehr begrenzte Unterstützungswerte ( hier beschrieben ) verwendet, da ich nur die Meta-Box-Werte für meinen benutzerdefinierten Beitragstyp benötige. Für meinen Typ ist es nicht sinnvoll, Titel und Inhalt anzugeben. Code unten:

register_post_type( 'athlete',
        array(
            'labels' => array(
                'name' => 'Athletes',
                'singular_name' => 'Athlete',
                'add_new' => 'Add New',
                'add_new_item' => 'Add New Athlete',
                'edit' => 'Edit',
                'edit_item' => 'Edit Athlete',
                'new_item' => 'New Athlete',
                'view' => 'View',
                'view_item' => 'View Athlete',
                'search_items' => 'Search Athletes',
                'not_found' => 'No Athletes found',
                'not_found_in_trash' => 'No Athletes found in Trash',
                'parent' => 'Parent Athlete'
            ),

            'public' => true,
            'menu_position' => 15,
            'supports' => array( 'thumbnail' ),
            'taxonomies' => array( '' ),
            'has_archive' => true
        )
    );

Wie Sie sehen, benötige ich nur die Option zur Unterstützung von Miniaturansichten, da der Rest meines Beitragstyps aus Meta-Boxen besteht (nicht in dieser Frage enthalten). Das Problem ist, wenn ich einen Athleten speichere, habe ich zwei Probleme, ich weiß nicht, wie ich meine Meta-Box-Werte in der Athletenliste anzeigen soll (als Spalten im Raster) und ich weiß nicht, wie ich den Titelwert als festlegen soll es wird immer auf "Automatisch generiert" gesetzt, was nicht bevorzugt wird. Wenn der Titel ein durchsuchbares Feld sein soll, würde ich es vorziehen, den Wert auf [Vorname] + [Nachname] zu setzen. Kann jemand bei diesen beiden Problemen helfen und erklären, ob Probleme auftreten, wenn ich einen benutzerdefinierten Beitragstyp anstelle von benutzerdefinierten Datenbanktabellen und einer benutzerdefinierten Benutzeroberfläche zum Verwalten meines Objekts verwende?

4
clockwiseq

Ich habe mich auch damit beschäftigt. Für eine Meta Box empfehle ich das Meta Box Plugin (zu dem ich regelmäßig Code beisteuere). Ein gutes Tutorial, wie man es benutzt, ist hier . Führen Sie für benutzerdefinierte Spalten eine Suche in WPSE durch, aber dies sollte Ihnen den Einstieg erleichtern. Beim Speichern des Beitragstitels wird der save_post-Filter verwendet. Wenn Sie Ihre Meta-Box einrichten, merken Sie sich die ID, die Sie für den Vor- und Nachnamen verwendet haben, und ersetzen Sie sie dann im folgenden Code:

add_filter( 'save_post_athlete', 'wpse88655_set_title', 10, 3 );
function wpse88655_set_title ( $post_id, $post, $update ){
    //This temporarily removes filter to prevent infinite loops
    remove_filter( 'save_post_athlete', __FUNCTION__ );

    //get first and last name meta
    $first = get_metadata( 'athelete_first_name', $post_id ); //meta for first name
    $last = get_metadata( 'athelete_last_name', $post_id );   //meta for last name

    $title = $first . ' ' . $last;

    //update title
    wp_update_post( array( 'ID'=>$post_id, 'post_title'=>$title ) );

    //redo filter
    add_filter( 'save_post_athlete', __FUNCTION__, 10, 3 );
}
3
Manny Fleurmond