Wordpress API - 如何将 rest 字段添加到标签

Wordpress API - how to add rest field to tags

我正在做一个无头的 wordpress,所以使用 wordpress API。

使用 Yoast 进行 SEO,我已将 yoast SEO 数据添加到我的 post 类型 API 端点,如下所示:

function wp_api_encode_yoast($data, $post, $context) {
    $yoastMeta = array(
        'yoast_wpseo_focuskw' => get_post_meta($post->ID, '_yoast_wpseo_focuskw', true),
        'yoast_wpseo_title' => wpseo_replace_vars(get_post_meta($post->ID, '_yoast_wpseo_title', true), $post),
        'yoast_wpseo_metadesc' => wpseo_replace_vars(get_post_meta($post->ID, '_yoast_wpseo_metadesc', true), $post),
        'yoast_wpseo_linkdex' => get_post_meta($post->ID, '_yoast_wpseo_linkdex', true),
        'yoast_wpseo_metakeywords' => get_post_meta($post->ID, '_yoast_wpseo_metakeywords', true),
        'yoast_wpseo_meta_robots_noindex' => get_post_meta($post->ID, '_yoast_wpseo_meta-robots-noindex', true),
        'yoast_wpseo_meta_robots_nofollow' => get_post_meta($post->ID, '_yoast_wpseo_meta-robots-nofollow', true),
        'yoast_wpseo_meta_robots_adv' => get_post_meta($post->ID, '_yoast_wpseo_meta-robots-adv', true),
        'yoast_wpseo_canonical' => get_post_meta($post->ID, '_yoast_wpseo_canonical', true),
        'yoast_wpseo_redirect' => get_post_meta($post->ID, '_yoast_wpseo_redirect', true),
        'yoast_wpseo_opengraph_title' => get_post_meta($post->ID, '_yoast_wpseo_opengraph-title', true),
        'yoast_wpseo_opengraph_description' => get_post_meta($post->ID, '_yoast_wpseo_opengraph-description', true),
        'yoast_wpseo_opengraph_image' => get_post_meta($post->ID, '_yoast_wpseo_opengraph-image', true),
        'yoast_wpseo_twitter_title' => get_post_meta($post->ID, '_yoast_wpseo_twitter-title', true),
        'yoast_wpseo_twitter_description' => get_post_meta($post->ID, '_yoast_wpseo_twitter-description', true),
        'yoast_wpseo_twitter_image' => get_post_meta($post->ID, '_yoast_wpseo_twitter-image', true)
    );

    $data->data['yoast_meta'] = (array) $yoastMeta;
    return $data;
}
add_filter('rest_prepare_post', 'wp_api_encode_yoast', 10, 3);
add_filter('rest_prepare_category', 'wp_api_encode_yoast', 10, 3);
add_filter('rest_prepare_page', 'wp_api_encode_yoast', 10, 3);

这适用于 post 类、类别、页面和任何其他 post 类型。但是我不知道如何将它添加到标签中,而且似乎缺少文档。我不相信 register_rest_field 是一个选项,因为它为特定的 post 类型注册了一个字段......而且我认为标签不会被视为 post 类型。至少,rest_prepare_tag 过滤器不起作用。

需要一些关于如何向标签添加休息字段的指导。

好的,终于找到解决办法了。

查看 wp_term_taxonomy table 后,我注意到 taxonomy 列描述了标签的分类术语 - 实际上是 post_tag,而不仅仅是 'tag'.

所以,这有效:

add_filter('rest_prepare_post_tag', 'wp_api_encode_yoast', 10, 3);

希望有人能得到帮助。