Estoy tratando de crear una API REST para mi sitio web de WordPress que se utiliza para la inclusión de instalaciones utilizando el complemento de administrador de trabajo de WordPress.
He registrado mi publicación personalizada, taxonomías en \ plugins \ rest-api \ plugin.php.
debajo de API me da todos los listados con respuesta predeterminada.
http: // localhost / sports / wp-json / wp / v2 / joblisting /
Quería agregar meta meta en la respuesta JSON usando el siguiente código.
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' );
}
}
Usando el código anterior, puedo agregar "teléfono" como respuesta REST pero siempre obtengo phone = false en respuesta. No muestra los datos correctos de la tabla wp_postmeta.
He seguido los enlaces mencionados a continuación para referencia.
http://v2.wp-api.org/extending/modifying/
Enchufe los detalles. 1. WP Job manager 2. rest-api
Cualquier ayuda será realmente útil.
fuente
Respuestas:
$post
en la función de devolución de llamada hay una matriz, no un objeto. Entonces no puedes usar$post->id
. Cámbielo a$post['id']
y debería funcionar:Recomiendo cambiar
_phone
aphone_number
u otra cosa sin subrayar el prefijo. Porque a_
menudo se usa con meta claves privadas. Intente agregar un campo personalizado que tenga metaclave con_
prefijo directamente a su publicación, verá lo que quise decir.fuente
WP API tiene un
rest_prepare_post
filtro (orest_prepare_CPT
si está trabajando con publicaciones personalizadas) que puede usar para modificar la respuesta JSON. En tu caso lo serárest_prepare_joblisting
.Usando el mismo filtro también puede eliminar campos / datos de la respuesta y hacer cualquier manipulación de los datos.
fuente
Simplemente agregue estos métodos a function.php
fuente
Aquí hay un ejemplo de OOP:
fuente