J'essaie de permettre à un plug-in de modifier le contenu affiché des articles avant son affichage pour l'API WP, ou du moins de l'enregistrer en tant que propriété distincte sur cette réponse JSON.
Par exemple, imaginez un plugin qui modifie le contenu d’un message de
Voici du contenu: foo
à
Voici du contenu: bar
Il est configuré pour utiliser le filtre the_post pour apporter ses modifications à l'interface. Mais le REST api n'est pas affecté. J'ai essayé d'utiliser le filtre rest_prepare_post mais c'est (a) apparemment une mauvaise pratique pour modifier directement le contenu rendu, donc je le mettrais comme une propriété supplémentaire? et (b) difficile de travailler avec - si j'essaye d'assigner $ data -> $ data ['content'] ['render'] à une variable, je reçois le message que j'essaie de convertir un WP Reste l'objet réponse à une chaîne. Pourtant, si je produis cette même variable dans mon journal des erreurs, cela fonctionne correctement.
add_filter( 'rest_prepare_post', array( __CLASS__, 'beforeFilterRest' ), 0, 2 );
public static function beforeFilterRest( $data, $post ){
$old_rendered_content = $data->$data['content']['rendered'];
$data->$data['content']['rendered'] = preg_replace_callback(
"/\s*<pre(?:lang=[\"']([\w-]+)[\"']|line=[\"'](\d*)[\"']|escaped=[\"'](true|false)?[\"']|highlight=[\"']((?:\d+[,-])*\d+)[\"']|src=[\"']([^\"']+)[\"']|\s)+>(.*)<\/pre>\s*/siU",
array( __CLASS__, 'substituteToken' ),
$old_rendered_content
);
return $data;
}
Je reçois une erreur juste à la première ligne de cette fonction. Qu'est-ce que je rate?
Il me semble que vous avez écrit $data->$data[...]
où vous voulez avoir $data->data[...]
. L'erreur de conversion "object to string" est probablement due au second $data
, où PHP s'attend à un nom de propriété d'objet mais obtient une autre référence à l'objet $data
.