wie man benutzerdefinierte Daten von benutzerdefinierten Beitragstypen anzeigt

Lesezeit: 3 Minuten

Benutzeravatar von Prusprus
Prusprus

Ich habe einen benutzerdefinierten Beitragstyp erstellt. Es wird problemlos im WordPress-Dashboard geladen und ich kann es auch speichern. Nehmen wir nun an, es handelt sich um einen benutzerdefinierten Beitragstyp, der Daten für einige Zeichenfolgen und einige Datumsangaben enthält.

Ich möchte in der Lage sein, diese benutzerdefinierten Beitragstypen abzurufen (was ich mit WP_Query getan und den post_type für den Namen meines benutzerdefinierten Beitragstyps angegeben habe). Wenn ich print_r für das zurückgegebene Objekt aufrufe, werden nirgendwo im Objekt die benutzerdefinierten Daten (Zeichenfolgen und Daten) gespeichert. Wie würde ich diese aus der Datenbank abrufen?

Ich habe mich stundenlang umgesehen und keinen Ansatz gefunden, um diese Daten abzurufen.

Auf Wunsch: So werden die Daten gespeichert:

function update_obituary(){
    global $post;
    update_post_meta($post->ID, "first_name", $_POST["first_name"]);
    update_post_meta($post->ID, "last_name", $_POST["last_name"]);
    update_post_meta($post->ID, "birth_date", $_POST["birth_date"]);
    update_post_meta($post->ID, "death_date", $_POST["death_date"]);
    update_post_meta($post->ID, "publication_date", $_POST["publication_date"]);
}

Diese Funktion ist an den ‚save_post‘-Hook gebunden. Die Daten werden erneut angezeigt, wenn ich die benutzerdefinierte Beitragstypinstanz im Bearbeitungsmodus erneut öffne. Das bedeutet, dass es in der Datenbank gespeichert ist, richtig?

  • Bitte fügen Sie einen Code hinzu. Wie werden die zusätzlichen Metadaten gespeichert?

    – Johannes Pille

    4. November 2011 um 20:16 Uhr

Benutzeravatar von Johannes Pille
Johannes Pille

Wenn die Metadaten beim Bearbeiten von Beiträgen des Typs angezeigt werden, müssen sie erfolgreich in der DB gespeichert worden sein.

Es gibt zwei wp-Funktionen, um die Metadaten des benutzerdefinierten Beitragstyps abzurufen: get_post_custom_values und get_post_meta. Der Unterschied ist, dass get_post_custom_values kann auf nicht eindeutige benutzerdefinierte Felder zugreifen, dh solche mit mehr als einem Wert, der einem einzelnen Schlüssel zugeordnet ist. Sie können es aber auch für einzelne Felder verwenden – Geschmacksfrage.

Angenommen, Ihr Beitragstyp heißt “Nachruf”:

// First lets set some arguments for the query:
// Optionally, those could of course go directly into the query,
// especially, if you have no others but post type.
$args = array(
    'post_type' => 'obituary',
    'posts_per_page' => 5
    // Several more arguments could go here. Last one without a comma.
);

// Query the posts:
$obituary_query = new WP_Query($args);

// Loop through the obituaries:
while ($obituary_query->have_posts()) : $obituary_query->the_post();
    // Echo some markup
    echo '<p>';
    // As with regular posts, you can use all normal display functions, such as
    the_title();
    // Within the loop, you can access custom fields like so:
    echo get_post_meta($post->ID, 'birth_date', true); 
    // Or like so:
    $birth_date = get_post_custom_values('birth_date');
    echo $birth_date[0];
    echo '</p>'; // Markup closing tags.
endwhile;

// Reset Post Data
wp_reset_postdata();

Ein Wort der Vorsicht, um Verwirrung zu vermeiden: Lassen Sie den booleschen Wert in get_post_meta wird es ein Array statt einer Zeichenfolge zurückgeben. get_post_custom_values gibt immer ein Array zurück, weshalb wir im obigen Beispiel das echoen $birth_date[0]statt $birth_date.

Auch bin ich mir im Moment nicht 100%ig sicher, ob $post->ID wird wie oben beschrieben funktionieren. Wenn nicht, ersetzen Sie es durch get_the_ID(). Beides sollte funktionieren, eines wird es sicher. Könnte das testen, spare mir aber die Zeit…

Überprüfen Sie der Vollständigkeit halber den Codex auf WP_Query für weitere Abfrageargumente und korrekte Verwendung.

  • Vielen Dank! Das ist toll! Hoffentlich fallen andere wie ich, die beim Versuch, Informationen zu finden, auf diese Seite stecken geblieben sind 🙂

    – Prusprus

    5. November 2011 um 23:11 Uhr

  • Nett! War neugierig, wie man das selbst macht, sehr hilfreiche Antwort

    – Alex

    25. Januar 2017 um 11:32 Uhr

  • Überrascht, einen Kommentar zu einer Antwort zu erhalten, die mehr als 5 Jahre zurückliegt. Beim erneuten Lesen hat sich an diesem Teil der WP-API jedoch nicht viel geändert – diese Informationen gelten tatsächlich immer noch.

    – Johannes Pille

    25. Januar 2017 um 11:41 Uhr

1393880cookie-checkwie man benutzerdefinierte Daten von benutzerdefinierten Beitragstypen anzeigt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy