Ich benutze die WordPress-REST-API um den HTML-Inhalt meiner WordPress-Seite in einer externen Anwendung zu erhalten. Ich rufe dies mysite/wp-json/wp/v2/pages/10 auf und es gibt Folgendes zurück:
"content": {
"rendered": "[vc_column_text]Hello World[/vc_column_text]"
}
Gibt es eine Möglichkeit, den Code in seiner endgültigen HTML-Ausgabe und ohne die [vc_] Shortcodes, zB: <p>Hello World</p>
Die Shortcodes kommen von der Visual Composer-Seitenerstellungs-Plugin.
Hier gefunden und beantwortet: https://github.com/CompassHB/web/issues/67#issuecomment-245857301
Das folgende Beispiel stammt aus dem obigen Link:
/**
* Modify REST API content for pages to force
* shortcodes to render since Visual Composer does not
* do this
*/
add_action( 'rest_api_init', function ()
{
register_rest_field(
'page',
'content',
array(
'get_callback' => 'compasshb_do_shortcodes',
'update_callback' => null,
'schema' => null,
)
);
});
function compasshb_do_shortcodes( $object, $field_name, $request )
{
WPBMap::addAllMappedShortcodes(); // This does all the work
global $post;
$post = get_post ($object['id']);
$output['rendered'] = apply_filters( 'the_content', $post->post_content );
// EDIT: add custom CSS to $output:
$output[ 'yb_wpb_post_custom_css' ] = get_post_meta( $object[ 'id' ], '_wpb_post_custom_css', true);
return $output;
}
BEARBEITEN
In einem Kommentar tauchte eine Frage auf: Wie bekomme ich das benutzerdefinierte CSS-Set für eine Seite (Beitrag usw.)? Ich habe den Beispielcode so geändert, dass es fügt der REST-API-Antwort das benutzerdefinierte CSS hinzu. Sie finden das CSS in content/yb_wpb_post_custom_css
.
Die andere Möglichkeit besteht darin, der REST-API-Antwort, die dieses CSS enthält, ein weiteres Feld hinzuzufügen. Der Schlüssel ist, dass das benutzerdefinierte CSS-Set für eine Seite/einen Beitrag/etc. hat einen Metaschlüssel _wpb_post_custom_css.
Ungefähr 2 Jahre zu spät zur Party funktionierte jedoch Folgendes für mich:
$output['rendered'] = apply_filters( 'the_content', get_the_content() );
Nur für den Fall, dass sich jemand wundert.
Habe hier das gleiche Problem. Ich habe versucht, einen Inhaltsfilter zu verwenden, um ihn in HTML umzuwandeln. Ich habe auch im Support-Forum gepostet, also hoffe ich, entweder dort oder hier eine Antwort zu bekommen. 🙂 WP-REST-API-Support-Forenbeitrag
– Rahel Cantor
12. April 2016 um 17:13 Uhr