J'essaie de créer une API REST pour mon site Web wordpress qui est utilisée pour la liste des installations à l'aide du plugin Wordpress Job Manager.
J'ai enregistré ma publication personnalisée, taxonomies dans \ plugins \ rest-api \ plugin.php.
ci-dessous l'API me donne toutes les listes avec une réponse par défaut.
http: // localhost / sports / wp-json / wp / v2 / joblisting /
Je voulais ajouter une méta post dans la réponse JSON en utilisant le code ci-dessous.
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' );
}
}
En utilisant le code ci-dessus, je peux ajouter "téléphone" comme réponse REST mais je reçois toujours phone = false en réponse. Il n'affiche pas les données correctes de la table wp_postmeta.
J'ai suivi les liens mentionnés ci-dessous pour référence.
http://v2.wp-api.org/extending/modifying/
Branchez les détails. 1. WP Job manager 2. rest-api
Toute aide sera vraiment utile.
la source
Réponses:
$post
dans la fonction de rappel est un tableau, pas un objet. Vous ne pouvez donc pas utiliser$post->id
. Changez-le en$post['id']
et cela devrait fonctionner:Je recommande de passer
_phone
àphone_number
ou autre chose sans préfixe de soulignement. Parce qu'il_
est souvent utilisé avec des méta-clés privées. Essayez d'ajouter un champ personnalisé qui a une clé méta avec_
préfixe directement à votre message, vous verrez ce que je voulais dire.la source
L'API WP dispose d'un
rest_prepare_post
filtre (ourest_prepare_CPT
si vous travaillez avec des publications personnalisées) que vous pouvez utiliser pour modifier la réponse JSON. Dans votre cas, ça le serarest_prepare_joblisting
.En utilisant le même filtre, vous pouvez également supprimer des champs / données de la réponse et effectuer toute manipulation des données.
la source
Ajoutez simplement ces méthodes à function.php
la source
Voici un exemple de POO:
la source