So zeigen Sie den Wert benutzerdefinierter Felder auf der Seite an


17

Ich habe einen benutzerdefinierten Beitragstyp namens "Software", der in verschiedenen benutzerdefinierten Feldern wie Untertitel, Preis, Screenshots, Download-Link usw. enthalten ist. Ich habe eine Funktion erstellt, die die Verwendung des tinyMCE-Bearbeitungsfensters für einige dieser benutzerdefinierten Felder ermöglicht. Ich habe versucht, diese Felder auf der Seite anzuzeigen, aber ohne Erfolg.

Die Methode, die ich benutze, ist die folgende:

<h1><?php the_title();?></h1>
<h3><?php echo get_post_meta(get_the_ID(), 'subtitle', TRUE); ?></h3>

Hier ist ein Link zur Seite.

Unterhalb der <hr/>auf der Seite befindet sich eine Liste aller erstellten Metas. Das EINZIGE der Felder, die angezeigt werden, ist "Preis" aus irgendeinem seltsamen Grund.

Hat jemand eine Idee, was ich vermisse?


Es ist in der Tat die get_post_meta()Funktion, und wenn Sie sie innerhalb der Schleife aufrufen, sollte sie funktionieren ... Es sei denn, Sie verwenden nicht den richtigen benutzerdefinierten Feldnamen. Sie werden oft mit einem Präfix versehen, wenn sie über ein Plugin wie eine Meta-Box implementiert werden. Können Sie den Code posten, wie Sie Ihre benutzerdefinierten Felder deklarieren? Eine Lösung wäre, die Tabelle wp_postmeta in PhpMyAdmin zu öffnen und die Spalte meta_keynach LIKE% ...% zu durchsuchen und "subtitle" als meta_key-Wert anzugeben. Sie werden genau sehen, unter welchem ​​Namen Wordpress Ihr benutzerdefiniertes Feld speichert.
Pixeline

Ich weiß, dass dies alt ist, aber ich benutze diese SQL, um eine Liste aller Metafelder in phpmyadmin zu erhalten: SELECT m.meta_key FROM wp_postmeta m GROUP BY m.meta_key
ssaltman 10.11.15

Antworten:


17

Nun, Sie verwenden:

get_post_meta(get_the_ID(), 'subtitle', TRUE);

Sie sagen also zu Wordpress, dass der Meta-Wert des Felds "Untertitel" und der zurückgegebene Wert im Zeichenfolgenformat vorliegen sollen. Siehe get_post_meta () docu .

Um alle Metadaten eines Posts zu erhalten, sollten Sie stattdessen die Funktion get_post_custom () verwenden. Zum Beispiel, wenn Sie sich in der Schleife befinden:

$custom = get_post_custom();
foreach($custom as $key => $value) {
     echo $key.': '.$value.'<br />';
}

Dadurch werden alle Metadaten des Posts zurückgegeben. Wenn Sie beispielsweise das Meta-Feld "Preis" überprüfen möchten:

if(isset($custom['price'])) {
    echo 'Price: '.$custom['price'][0];
}

Letzter Codeblock fehlt a)
carbide20

1
Es scheint , dass $custom['price']gibt einen Array zurück , so dass Sie tun müssen , um$custom['price'][0]
wal

3

Verwenden Sie diesen Code, um Ihr Problem zu lösen.

$key_name = get_post_custom_values($key = 'Key Name');
echo $key_name[0];
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.