Ich versuche, eine REST-API für meine WordPress-Website zu erstellen, die für die Auflistung von Einrichtungen mithilfe des WordPress-Jobmanager-Plugins verwendet wird.
Ich habe meinen benutzerdefinierten Beitrag Taxonomien in \ plugins \ rest-api \ plugin.php registriert.
Die folgende API gibt mir alle Einträge mit Standardantwort.
http: // localhost / sports / wp-json / wp / v2 / joblisting /
Ich wollte Post-Meta in die JSON-Antwort mit dem folgenden Code einfügen.
function slug_register_phone_number() {
register_rest_field( 'job_listing',
'phone',
array(
'get_callback' => 'slug_get_phone_number',
'update_callback' => null,
'schema' => null,
)
);
}
function slug_get_phone_number($post, $field_name, $request) {
return get_post_meta($post->id, '_phone' );
}
}
Mit dem obigen Code kann ich "Telefon" als REST-Antwort hinzufügen, aber ich erhalte immer die Antwort "Telefon = falsch". Es werden nicht die korrekten Daten aus der Tabelle wp_postmeta angezeigt.
Ich bin den unten genannten Links als Referenz gefolgt.
http://v2.wp-api.org/extending/modifying/
Details einstecken. 1. WP Job Manager 2. Rest-API
Jede Hilfe wird wirklich hilfreich sein.
quelle
Antworten:
$post
In der Rückruffunktion ist ein Array kein Objekt. Sie können also nicht verwenden$post->id
. Ändern Sie es in$post['id']
und es sollte funktionieren:Ich empfehle,
_phone
zuphone_number
oder etwas anderem ohne Unterstrich zu wechseln . Weil_
oft mit privaten Metaschlüsseln verwendet wird. Versuchen Sie, ein benutzerdefiniertes Feld mit einem Metaschlüssel mit_
Präfix direkt zu Ihrem Beitrag hinzuzufügen. Sie werden sehen, was ich gemeint habe.quelle
Die WP-API verfügt über einen
rest_prepare_post
Filter (oderrest_prepare_CPT
wenn Sie mit benutzerdefinierten Posts arbeiten), mit dem Sie die JSON-Antwort ändern können. In deinem Fall wird es seinrest_prepare_joblisting
.Mit demselben Filter können Sie auch Felder / Daten aus der Antwort entfernen und die Daten manipulieren.
quelle
Fügen Sie diese Methoden einfach zu function.php hinzu
quelle
Hier ist ein OOP-Beispiel:
quelle