Como se indica en los comentarios, según la URL para editar, esta es una taxonomía y no un CPT y, como tal, la metadatos se almacena en una ubicación diferente.
Para ser más genérico, en lugar de usar el global $post
object podemos pedirle a WordPress la “cosa” actual usando get_queried_object()
. Esto puede devolver varias cosas diferentes según la URL, pero (actualmente) solo estamos interesados en publicaciones y términos de taxonomía. A partir de eso podemos realizar y instance of
probar y devolver los datos apropiados.
add_shortcode('rm_title', 'rm_shortcode_title');
function rm_shortcode_title(){
$obj = get_queried_object();
if($obj instance of WP_Post){
return get_post_meta($obj->ID, 'rank_math_title', true);
}
if($obj instance of WP_Term){
return get_term_meta($obj->term_id, 'rank_math_title', true);
}
}
Como se señaló, hay otras cosas que pueden consultarse y que también le pueden interesar. Por ejemplo, get_queried_object()
podría devolver un WP_User
objeto en las páginas del autor si las está usando, y si es así, le gustaría usar get_user_meta
.
También puede devolver un WP_Post_Type
objeto en las páginas de archivo, sin embargo, eso no tiene un efecto directo get_XYZ_meta
y, en cambio, si su complemento lo admite, probablemente esté en algún lugar de la tabla de opciones.
Además, no tengo idea si el término código realmente funciona. Es posible que deba ejecutar var_dump(get_term_meta($obj->term_id));
con solo un parámetro para ver lo que realmente hay en la tabla para ese objeto.
.