19 octobre 2016

WP REST API : Gérer le tag « More / Lire la suite »

Par défaut l’API json de WordPress ne gère pas le tag <!–more–> (bouton « lire la suite ») permettant de scinder en 2 parties le contenu d’un article WordPress. Yoren Chang a posé les bases d’une solution mais celle-ci ne répond pas exactement aux besoins du projet sur lequel je bosse actuellement :

  • je rencontre des erreurs de HTML (<p> non fermé au niveau de la césure)
  • je désire rendre optionnel le nouveau nœud json (ne le faire apparaitre que si le tag <!–more–> est présent dans le corp de texte)

J’ai donc mouliné ma propre fonction …

function bagot_rest_prepare_post( $data, $post, $request ) {
$_data = $data->data;
$excerpt = get_extended( $post->post_content );
if( $excerpt['main'] != $excerpt['extended'] ):
$_data['content']['main'] = get_the_content_with_formatting( '', true );
if($_data['content']['main'] != $_data['content']['rendered']):
$data->data = $_data;
endif;
endif;
return $data;
}
add_filter( 'rest_prepare_post', 'bagot_rest_prepare_post', 10, 3 );

Références :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *