En la segunda versión de la API REST de WordPress, se han realizado más mejoras sobre cómo se gestionan los campos personalizados en WordPress. Si aún no ha descargado la segunda versión, puede hacerlo a través de wordpress.org o clonando la rama de “desarrollo” del depósito oficial de GitHub. En este artículo, aprenderá cómo editar y crear meta-juegos utilizando la API REST WordPress y cómo hacerse cargo o actualizar los metadatos para una publicación. También aprenderá cómo personalizar los puntos predeterminados finales para una publicación para exponer meta post u otros datos relacionados con una publicación. Si bien este artículo discute principalmente meta post, el meta del usuario se puede aplicar en gran medida.
Obteniendo los meta campos con la API REST suponiendo que tenga la API instalada REST y que está familiarizado con la obtención y actualización de las publicaciones a través de la API REST, probablemente sepa cómo trabajar con los datos de publicación principales. Sobre todo te gusta saber que si interrogas para una publicación, los meta campos para publicaciones no están incluidos. Hay un punto final para el meta post, pero requiere autenticación. Antes de ingresar esto, debe aprender a exponer los meta campos en la ruta de publicación principal. Esto permitirá que un metal aparezca en una solicitud de una publicación o grupo de publicaciones sin ninguna autenticación o sin usar los puntos finales meta que requieren autenticación.
Imagine que tiene un tipo de publicación llamado “Jedi” y un metal llamado “LightSaber_Color” y desea todas las solicitudes a “WP-JSON/WP/V2/Jedi” para mostrar el valor del campo “slightaber_color”. En esta situación, puede usar la función registre_pi_field () para agregar este campo a la respuesta. Esta función tiene tres argumentos: el primero es para qué tipo de objeto, que en este caso significa el tipo de publicación, para agregar el campo. El segundo es el nombre de este campo: en este caso, el nombre del meta campo. El tercero es una serie de argumentos. En la matriz, debe definir la función de llamada Vice Versa para los nombres de las funciones para obtener y actualizar el valor del campo. El ejemplo, y en algunos ejemplos después, recibirá y actualizará la meta post. Para iniciar, configurará algunas funciones de conversación genéricas: SLUG_GET_POST_META_CB FUNCIÓN ($ Object, $ name_cade, $ request) {
return get_post_meta ($ object [‘id’], $ field_name);
}
Slug_update_post_meta_cb function ($ value, $ object, $ name_cade) {
devolver update_post_meta ($ objeto [‘id’], $ field_name, $ valor);
} Tenga en cuenta que estas dos funciones solo funcionarán si el nombre del campo registrado en la API es el mismo que Metacheia. También asegúrese de que la meta clave no esté protegida. Si el nombre no coincide, se requerirá una llamada inversa personalizada. Me acercaré brevemente a los meta-queles protegidos que comienzan con un carácter subrayado.
Estas dos funciones son correctas por los argumentos del resto del resto a las funciones familiares get_post_meta y update_update_meta. Es importante tener en cuenta que un “campo” no debe tratarse como un meta campo. Puede declarar un campo con cualquier nombre y puede proporcionar una función de llamada inversa para hacer lo que necesite con registro_rest_field (). Con estas dos funciones puede registrar su campo API: add_action (‘REST_PI_INIT’, function () {Register_PI_FIELD (‘Jedi’,
“Láser color_sabie”,
matriz(
‘get_callback’ => ‘slug_get_post_meta_cb’,
‘update_callback’ => ‘slug_update_post_meta_cb’,
“Esquema” => nulo,
)
);
}); Ahora, cada vez que se realiza una solicitud en “WP-JSON/WP/V2/Jedi/”, un campo “sorteoBer_Color” con el valor del meta-campamento correspondiente (publicaciones) en el tipo de Jedi se agregará a los datos.
Creación y edición de los meta campos con la API REST Si realiza una solicitud autenticada a la API, todas las publicaciones tendrán finales adicionales disponibles para Meta. Por ejemplo, “WP-JSON/WP/V2/POSTS/1/META” mostrará todos los campos meta desprotegidos para publicar ID 1, pero solo para aplicaciones autenticadas. Si desea hacer meta_date público u otros datos relacionados, entonces registro_pi_field () es la única forma de exponer estos datos sin un punto final personalizado a usuarios no autorizados. El meta de punto final para una publicación mostrará el meta de cada meta cadena. Esto es útil para actualizar un meta campo existente.
Por ejemplo, si desea agregar un valor para el color de la espada láser a una publicación de Jedi ID 42, haría un puesto a “WP-JSON/WP/V2/JDI/42/META” y, en el Cuerpo de esas solicitudes, incluya el metal que actualiza y el nuevo valor. Para actualizar esa clave, debe encontrar el Meta ID realizando una solicitud a “WP-JSON/WP/V2/Jedi/42/Meta”, luego use esa ID en una nueva publicación para el ID final el ejemplo respectivo de , si la meta ID fuera 100, sería “WP-JSON/WP/V2/Jedi/42/Meta/100”. Aquí hay un ejemplo usando la API HTTP de WordPress para crear meta campo: // Obtener URL para la publicación de metal 1
$ url = REST_URL (‘WP/V2/POSTS/1/META’);
// Agregar encabezados de autenticación básicos (no se use en producción)
$ encabezados = matriz (
‘Autorización’ => ‘Básico’. Base64_encode (‘admin’. ‘:’. ‘Contraseña’),
);
// Prepara el cuerpo de la demanda con metal/valor
$ cuerpo = matriz (
‘Key’ => ‘Color_bie Laser’,
‘Valor’ => ‘azul’
);
// realiza la aplicación post
$ respuesta = wp_remote_request ($ url, matrix (
‘Método’ => ‘post’,
‘Encabezados’ => $ encabezados,
“Corp” => $ cuerpo
)
);
// Si la respuesta no es un error, se eco de color eco y obtenga el metal de metal de metal
$ body = wp_remote_retrieve_body ($ respuesta);
If (! Is_wp_error ($ body)) {
$ body = json_decode ($ body);
$ meta_id = $ body-> id;
Echo “El color es”. $ cuerpo-> valor;
if ($ meta_id) {
// Agregar meta id al final de la URL
$ url. = ‘/’. $ meta_id;
// Esta vez solo tengo que enviar valor
$ cuerpo = matriz (
‘Valor’ => ‘verde’);
$ respuesta = wp_remote_request ($ url, matrix (
‘Método’ => ‘post’,
‘Encabezados’ => $ encabezados,
“Corp” => $ cuerpo
)
);
// Si no es un error, hace eco de un nuevo color
$ body = wp_remote_retrieve_body ($ respuesta);
If (! Is_wp_error ($ body)) {
$ body = json_decode ($ body);
Echo “El color es ahora”. $ cuerpo-> valor;
}
}
}
Probablemente no editará un meta campo inmediatamente después de haberlo creado. Sin embargo, para ilustrar cómo podría hacer cambios, demostraré cómo editar los campos de Título de SEO y Descripción de SEO agregados por el complemento de SEO de Yast WordPress, haciéndolos disponibles en las publicaciones para publicaciones.
Esto ayudará a traer la discusión en un círculo completo.
Los campos de meta “yoast_wpseo_title” y “yoast_wpsseo_metadesc se consideran protegidos por WordPress. Para hacer una solicitud API para ellos, primero debe eliminar su protección. Para esto, puede usar el filtro “is_protected_meta”. Debido a que este filtro no es parte del resto, afecta cualquier uso de estos campos. Asegúrese de que la protección se elimine solo durante las llamadas API, lo que puede determinarse en función de la constante REST_REQUEST. Primero, conecte el filtro “IS_Protected_Meta”. Si Constanta REST_REQUEST es verdadero, entonces, en la devolución de llamada, configure estos dos campos como desprotegidos.
Así es como se ve: add_filter (‘is_protected_meta’, function ($ protegido, $ meta_key) {
If (‘_yoast_wpseo_title’ == $ meta_key
$ protegido = falso;

}
devuelve $ protegido;
}, 10, 2); Ahora puede registrar ambos campos en API para publicaciones: register_pi_field (‘post’, ‘_ yoast_wpso_metadesc,
matriz(
‘get_callback’ => ‘slug_get_post_meta_cb’,
‘update_callback’ => ‘slug_update_post_meta_cb’,
“Esquema” => nulo,
)
); Sin embargo, en su lugar, ahora puede buscar sus ID con una solicitud GETA al meta punto final para una publicación. Esto le permitirá crear una URL para enviar una solicitud de publicación para actualizar los valores. Por supuesto, si no hay valor, deberá crear uno.
Aquí hay una función que se basa en los campos que están registrados y desprotegidos, similar al ejemplo del código anterior, que puede actualizar o crear valores en los dos campos para una ID de publicación determinada: el slug_update_wp_seo_via_api ($ post_id, $ meta_title, $ $, $ meta_desc, $ auth_headers) {
// Obtener URL para la publicación meta
$ meta_url = REST_URL (‘WP/V2/POSTS/’. $ POST_ID. ‘/META’);
// Agregar encabezados de autenticación básicos (no se use en producción)
$ Encabezados [‘autorización’] = $ auth_headers;
// Haga la solicitud GET para todos los meta
$ respuesta = wp_remote_request ($ meta_url, array (
‘Método’ => ‘Get’,
‘Encabezados’ => $ encabezados,
)
);
// Si la respuesta no es un error, continúa
$ body = wp_remote_retrieve_body ($ respuesta);
If (! Is_wp_error ($ body)) {
// Obtener metadatos en una matriz
$ meta_data = json_decode ($ body);
// Establecer las variables de las ID de ambos campos para falsificar
$ meta_title_id = $ meta_desc_id = false;
// bucle hasta que encontremos cada
foreach ($ meta_data como $ meta) {
// Si el metal actual es una variable para configurar el título (‘_yoast_wpso_title’ == $ meta-> key) {
$ meta_title_id = $ meta-> id;
}
// Si el metal actual es una variable de descripción establecida para ello
if (‘_yoast_wpsseo_metadesc’ == $ meta> key) {
$ meta_desc_id = $ meta-> id;
}
// bucle de ruptura si los tenemos a ambos
if (false! = $ meta_desc_id && false! = $ meta_itle_id) {
pausa;
}
}
// ver si tenemos un valor para la identificación de meta de título
// En caso afirmativo, actualizaciones, si no crea
If ($ meta_title_id) {
// Agregar meta id al final de la URL
$ url = $ meta_url. ‘/’. $ meta_title_id;
// poner valor en el cuerpo
$ cuerpo = matriz (
‘Valor’ => $ meta_title
);
// Actualización por aplicación Post
$ respuesta = wp_remote_request ($ url, matrix (
‘Método’ => ‘post’,
‘Encabezados’ => $ encabezados,
“Corp” => $ cuerpo
)
);
// activar una acción para exponer la respuesta a la actualización del título de SEO
do_action (‘Slug_wp_Seo_itle_Updated_via_pi’, $ respuesta, $ post_id);
} de lo contrario {
// Pon el valor y la llave en el cuerpo
$ cuerpo = matriz (
‘Key’ => ‘_yoast_wpsseo_title’,
‘Valor’ => $ meta_title
);
// Crea por aplicación post
$ respuesta = wp_remote_request ($ meta_url, array (
‘Método’ => ‘post’,
‘Encabezados’ => $ encabezados,
“Corp” => $ cuerpo
)
);
// activar una acción para exponer la respuesta a la creación del título de SEO
do_action (‘Slug_wp_Seo_title_Creted_Via_pi’, $ respuesta, $ post_id);
}
// Ver si tenemos un valor para la ID de meta descripción
// En caso afirmativo, actualizaciones, si no crea
if ($ meta_desc_id) {
// Agregar meta id al final de la URL
$ url = $ meta_url. ‘/’. $ meta_desc_id; // poner valor en el cuerpo
$ cuerpo = matriz (
‘Valor’ => $ meta_desc
);
// Actualización por aplicación Post
$ respuesta = wp_remote_request ($ url, matrix (
‘Método’ => ‘post’,
‘Encabezados’ => $ encabezados,
“Corp” => $ cuerpo
)
);
// activar una acción para exponer la respuesta para actualizar la descripción de SEO
do_action (‘Slug_wp_Seo_Desc_Updated_via_pi’, $ respuesta, $ post_id);
} de lo contrario {
// Pon el valor y la llave en el cuerpo
$ cuerpo = matriz (
‘Key’ => ‘_yoast_wpsseo_metadesc,
‘Valor’ => $ meta_desc
);
// Crea por aplicación post
$ respuesta = wp_remote_request ($ meta_url, array (
‘Método’ => ‘post’,
‘Encabezados’ => $ encabezados,
“Corp” => $ cuerpo
)
);
// activar una acción para exponer la respuesta a la creación de la descripción de SEO
do_action (‘Slug_wp_Seo_Desc_crested_via_pi’, $ respuesta, $ post_id);
}
}
} Aprendiste mucho más que cómo trabajar con Post Meta Now, debería poder comenzar a trabajar con Meta Post para publicaciones usando la API REST de WordPress. Tenga en cuenta que Register_PI_FIELD se puede usar para mucho más que Meta Fields: es una puerta de acceso para ver y actualizar los datos deseados. Lo que ha aprendido en este artículo debería equiparlo para que use registro_pi_field () con cualquier función que necesite para mostrar o guardar datos. Esta pequeña función útil es una de las partes más útiles de la API. Usa su poder sabiamente. ¡Comparta sus pensamientos y preguntas en los comentarios a continuación!
Trabajar con Post Metadate usando la API REST WordPress
Tags Trabajar con Post Metadate usando API
homefinance blog