web-dev-qa-db-fra.com

Contenu non rendu Cornerstone through REST API

J'essaie d'obtenir du contenu brut via REST API

Quand j'appelle " http: //mysite.tld/wp-json/wp/v2/pages/456 " Je reçois du contenu rendu

"content": {
"rendered": "<div id=\"something\"></div>\n",
"protected": false
},

mais je veux que le contenu ne soit pas rendu

LE: J'ai trouvé quelque chose dans /wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

if ( ! empty( $schema['properties']['content'] ) ) {
    $data['content'] = array(
        'raw' => $post->post_content,
        /** This filter is documented in wp-includes/post-template.php */
        'rendered'  => post_password_required( $post ) ? '' : apply_filters( 'the_content', $post->post_content ),
        'protected' => (bool) $post->post_password,
    );
}

Si je remplace

'rendered'  => post_password_required( $post ) ? '' : apply_filters( 'the_content', $post->post_content ),

avec

'rendered'  => $post->post_content,

ça marche bien mais comment puis-je éditer ça depuis un plugin personnalisé? btw: j'ai remarqué "brut" est absent de la réponse de l'API

2
Kovi

Ceci est attendu, car cela dépend du context .

Le contenu brut apparaîtra pour le contexte edit mais pas pour le contexte view ou embed.

Il est filtré par la méthode WP_REST_Controller::filter_response_by_context().

Vous pouvez toujours ajouter un nouveau champ à la réponse avec register_rest_field() où le rappel get_callback reçoit un tableau en entrée avec des données de publication, y compris le contenu brut.

Mais alors vous devriez faire attention à ne pas fuir, par exemple. les messages protégés par mot de passe ou le contenu masqué avec des codes courts.

2
birgire