Erhalten Sie eine rohe HTML-Ausgabe von der WordPress-REST-API

Lesezeit: 3 Minuten

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.

  • 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

Benutzeravatar von muka.gergely
muka.gergely

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.

  • Wie bekomme ich das CSS, Rest API hat kein CSS von Visual Composer?

    Benutzer10090131

    19. September 2019 um 8:32 Uhr

  • @GeorgeAlvis: Ich habe meine Antwort geändert, sodass Sie jetzt eine REST-Antwort mit dem benutzerdefinierten CSS erhalten. WPB speichert das benutzerdefinierte CSS in a Metanicht im Inhalt, deshalb hast du es bei der Inhaltsanfrage nicht bekommen. Meta können jedoch einzeln hinzugefügt werden – das habe ich getan.

    – muka.gergely

    19. September 2019 um 10:13 Uhr


  • $output['rendered'] = apply_filters( 'the_content', get_the_content()); Danke für die Antwort, ich rufe Seiteninhalte aus der obigen Zeile ab, aber jetzt möchte ich Seiten-CSS auch in der API, nicht im benutzerdefinierten CSS. Wie mache ich es ? TIA

    Benutzer10090131

    19. September 2019 um 10:51 Uhr


  • Es ist in BEARBEITEN Abschnitt der Antwort – fügen Sie ein neues Feld hinzu Inhaltoder fügen Sie der REST-Antwort ein neues Feld hinzu.

    – muka.gergely

    19. September 2019 um 10:51 Uhr


  • Ich verwende kein benutzerdefiniertes CSS, erwarte jedoch, dass CSS für visuelle Composer-Elemente in der API verfügbar ist. @muka.gergely

    Benutzer10090131

    19. September 2019 um 10:53 Uhr

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.

  • Wie sollte das bei dir funktionieren? Hast du einen Filter hinzugefügt? Es ist nicht klar.

    – DrLightman

    25. Oktober 2021 um 13:46 Uhr


  • Ich habe keine Filter hinzugefügt, ich habe nur den Text von db bekommen und versucht, rohes HTML ohne die Shortcodes zu bekommen …

    – Nachiket Namjoshi

    28. Oktober 2021 um 6:12 Uhr

1386390cookie-checkErhalten Sie eine rohe HTML-Ausgabe von der WordPress-REST-API

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy