estoy usando el API REST de WordPress para obtener el contenido HTML de mi página de WordPress en una aplicación externa. Llamo a este mysite/wp-json/wp/v2/pages/10 y devuelve:
"content": {
"rendered": "[vc_column_text]Hello World[/vc_column_text]"
}
¿Hay alguna forma de devolver el código en su salida HTML final y sin el [vc_] códigos cortos, por ejemplo: <p>Hello World</p>
Los códigos cortos provienen del Complemento de creación de páginas de Visual Composer.
muka.gergely
Encontrado y respuesta aquí: https://github.com/CompassHB/web/issues/67#issuecomment-245857301
El siguiente ejemplo está tomado del enlace anterior:
/**
* 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;
}
EDITAR
Surgió una pregunta en un comentario: ¿Cómo obtener el conjunto de CSS personalizado para una página (publicación, etc.)? Modifiqué el código de muestra de una manera que agrega el CSS personalizado a la respuesta de la API REST. Encontrarás el CSS en content/yb_wpb_post_custom_css
.
La otra forma es agregar otro campo a la respuesta de la API REST que contenga este CSS. La clave es que el CSS personalizado establecido para una página/publicación/etc. tiene una clave meta _wpb_post_custom_css.
-
¿Cómo obtengo el CSS, el resto de la API no tiene CSS de Visual Composer?
– usuario10090131
19 de septiembre de 2019 a las 8:32
-
@GeorgeAlvis: modifiqué mi respuesta para que ahora le brinde una respuesta REST con el CSS personalizado. WPB almacena el CSS personalizado en un metano en el contenido, por eso no lo obtuviste con la solicitud de contenido. meta Sin embargo, se pueden agregar uno por uno, eso es lo que hice.
– muka.gergely
19 de septiembre de 2019 a las 10:13
-
$output['rendered'] = apply_filters( 'the_content', get_the_content());
gracias por la respuesta, estoy recuperando el contenido de la página de la línea anterior, pero ahora también quiero el CSS de la página en la API, no en el CSS personalizado. Cómo lo hago ? AIT– usuario10090131
19 sep 2019 a las 10:51
-
Está en el EDITAR sección de la respuesta – agregue un nuevo campo a contenidoo agregue un nuevo campo a la respuesta REST.
– muka.gergely
19 sep 2019 a las 10:51
-
No estoy usando CSS personalizado, pero espero que el CSS del elemento del compositor visual esté disponible en la API. @muka.gergely
– usuario10090131
19 de septiembre de 2019 a las 10:53
Aproximadamente 2 años tarde a la fiesta, sin embargo, lo siguiente funcionó para mí:
$output['rendered'] = apply_filters( 'the_content', get_the_content() );
Por si acaso alguien se lo preguntaba.
-
¿Cómo se suponía que iba a funcionar esto para ti? ¿Agregaste algún filtro? No es claro.
– DrLightman
25 oct 2021 a las 13:46
-
No agregué ningún filtro, solo estaba obteniendo el texto de db y tratando de obtener html sin procesar sin los códigos cortos …
– Nachiket Namjoshi
28 de octubre de 2021 a las 6:12
Tener el mismo problema aquí. He estado tratando de usar un filtro de contenido para transformarlo a HTML. También publiqué en el foro de soporte, así que espero obtener una respuesta allí o aquí. 🙂 Publicación en el foro de soporte de la API REST de WP
– Raquel Cantor
12/04/2016 a las 17:13