it-swarm.com.de

WP zeigt keine benutzerdefinierten Array-Felder an?

Ich frage mich, warum WordPress PHP array() und serialisierte Daten in benutzerdefinierten Feldern im Admin-Bereich (für Seiten, Beiträge usw.) nicht auflistet. Es werden nur benutzerdefinierte Felder angezeigt, die Zeichenfolgen und Zahlen enthalten und vom Benutzer manuell bearbeitet werden können.

Bearbeiten: Warum werden Post-Meta-Werte nicht angezeigt, wenn sie als Nicht-String-Wert gespeichert sind, dh als Arrays oder als serialisierter Wert gespeichert sind?

Beispiel: Wenn ein Beitrag einen Metaschlüssel 'custom-meta' mit einem Zeichenfolgenwert von 'yes' enthält, wird er im Metafeld angezeigt. Wenn er jedoch einen Arraywert wie array('value' => 'yes') enthält, wird er nicht im Metafeld angezeigt.

Kann ich das aktivieren?

3
Paul

Es gibt keinen Filter, um dieses Verhalten zu ändern. Sie müssten die gesamte Metabox ersetzen .

Auf der anderen Seite: Ich denke, es gibt keine wirklich einfache Möglichkeit, diese Arrays anzuzeigen und zu speichern.

Beispiel für einen fiktiven Metaschlüssel 'foo':

array (
    0 => 2,
    'hello' => array (
        0 => 2,
        'hello' => 'world'
    )
)

Das Erstellen einer Standardschnittstelle für ein solches Array wäre sehr schwierig. Diese Metabox ist für einfache Felder gedacht und sollte einfach zu bedienen sein. Und Sie können nicht nur den serialisierten String präsentieren: Eine Bearbeitung, die ihn wahrscheinlich kaputt machen würde. Ich halte das für einen Kompromiss. Besser als nichts, aber nicht perfekt.

4
fuxia

Für diejenigen, die hier landen, können Sie einfach eine benutzerdefinierte Seitenvorlage auf einer privaten Seite erstellen und dann so etwas in die Vorlagenseitendatei werfen:

/*Template Name: Test Post Meta */
$thisPostMeta = get_post_meta($yourPostId, 'meta_key');

//Check for type of value
if (is_array($thisPostMeta)) {
print_r($thisPostMeta); 
} else {
echo $thisPostMeta;
}

Anmerkung: ungetestet.

0
Eckstein

Ich denke, Sie können serialize() verwenden

Beispiel:

$value = array('value' => 'yes');
$new_value = serialize($value);
add_post_meta($post_id,'meta_key',$new_value);

Dann können Sie die Metabox im Admin-Bereich sehen.

0
秋蕊李