Customizing WordPress API data
July 8, 2019
Ziel
WP REST API Responses erweitern oder aufraeumen:
- Felder entfernen
- Extra Daten hinzufuegen (z.B. Featured Image URLs)
- Excerpts anpassen
Filter Hook: rest_prepare_post
Der Filter wird aufgerufen, bevor ein Post als JSON ausgegeben wird:
code
add_filter('rest_prepare_post', 'my_rest_modifier', 10, 3);
Parameter:
$data(WP_REST_Response)$post(WP_Post)$context(string)
Beispiel: Featured Image URLs
code
function add_featured_image_url($data, $post, $context) {
$id = $data->data['featured_media'];
if (!$id) {
return $data;
}
$full = wp_get_attachment_image_src($id, 'full');
$thumb = image_get_intermediate_size($id, 'thumbnail');
$medium = image_get_intermediate_size($id, 'medium');
if ($thumb) {
$data->data['featured_image_url']['thumbnail'] = $thumb['url'];
}
if ($medium) {
$data->data['featured_image_url']['medium'] = $medium['url'];
}
if ($full) {
$data->data['featured_image_url']['full'] = $full[0];
}
return $data;
}
add_filter('rest_prepare_post', 'add_featured_image_url', 10, 3);
Beispiel: Comment Count
code
function add_comment_count($data, $post, $context) {
$count = get_comments([
'post_id' => $post->ID,
'count' => true,
'status' => 'approve',
]);
$data->data['comment_count'] = $count;
return $data;
}
add_filter('rest_prepare_post', 'add_comment_count', 10, 3);
Beispiel: Excerpt bereinigen
code
function custom_excerpt($data, $post, $context) {
if (!has_excerpt($post->ID)) {
$data->data['excerpt']['raw'] = wp_trim_words($post->post_content, 55, ' ... ');
}
return $data;
}
add_filter('rest_prepare_post', 'custom_excerpt', 10, 3);