Wordpress API - как добавить поле отдыха в теги - PullRequest
3 голосов
/ 04 июня 2019

Я использую WordPress без головы, поэтому использую WordPress API.

Используя Yoast для SEO, я добавил данные SEO в свои конечные точки 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);

Это работает для сообщений, категорий, страниц и любых других типов сообщений.Но я не понимаю, как я могу добавить это к тегам, а документации, похоже, не хватает.Я не верю, что register_rest_field - это вариант, поскольку он регистрирует поле для определенного типа записи ... и я не думаю, что тег обрабатывается как тип записи.По крайней мере, фильтр rest_prepare_tag не работает.

Нужны некоторые указатели о том, как добавить поле отдыха в теги.

1 Ответ

1 голос
/ 10 июня 2019

ОК, наконец, нашел решение.

После просмотра таблицы wp_term_taxonomy я заметил, что в столбце taxonomy описывается термин таксономии для тегов, который на самом деле является post_tag, а не просто тегом.

Итак, это работает:

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

Надеюсь, кому-то это поможет.

...