Para guardar datos adicionales en posts y páginas de WordPress, deberías dominar la función «register_post_meta()»
Se utiliza para registrar metadatos personalizados para un tipo de publicación específica (Posts, Páginas y Custom Post Type)
Se usa para almacenar información en en la base de datos de WordPress.
Amplia mucho las posibilidades de personalización de WordPress.
'show_in_rest'
determina si el metadato se tiene que mostrar en la API REST, lo cual es útil para bloques de Gutenberg y aplicaciones headless.
Asegúrate que solo los usuarios autorizados puedan editar metadatos críticos, usando
'auth_callback'.
Soporta varios tipos de datos para los metadatos, incluyendo
'string'
, 'boolean'
, 'integer'
, 'number'
, 'array'
, y 'object'
.
'single' = true,
especifica si el metadato debe tener un solo valor o múltiples valores.
'sanitize_callback'
define una función que se usa para limpiar los datos antes de guardarlos.
Puedes definir un valor por defecto que se utilizará si no se ha establecido ningún valor. usando el argumento
'default'
.
Utilízala para registrar metadatos que se utilicen para integraciones con APIs externas.

//Registrar un campo de valoración tipo numero en un CPT Libros
function registrar_mis_metadatos_libros() {
register_post_meta('libros', 'rating', array(
'type' => 'number',
'single' => true,
'show_in_rest' => true,
'default' => 0,
'sanitize_callback' => 'absint',
'auth_callback' => function() {
return current_user_can('edit_posts');
},
));
add_action('init', 'registrar_mis_metadatos_libros');
//Optimizando consultas por metadastos con wp_query
$args = array(
'meta_key' => 'isbn',
'meta_value' => '978-3-16-148410-0',
);
$query = new WP_Query($args);
//Obtener y mostrar un metadato
$isbn = get_post_meta(get_the_ID(), 'isbn', true);
echo 'ISBN: ' . esc_html($isbn);
//Condicional para registrar un metadato
if (is_admin()) {
register_post_meta('libros', 'isbn', $args);
}