I'm trying to get the content of a custom post type called event using wp rest api . everything works fine but I used Wp Backery page builder for creating contents in my event post type and the problem is I'm getting shortcodes without parsing and they are in plain text .
Can anybody help me with this, please?
I've tried some of answers in similar questions like using do_shortcode()
function and trying to call
apply_filters( 'the_content' , get_the_content())
but none of them work for me
here is my rest-api codes:
add_action( 'rest_api_init' , 'wt_rest_api');
function wt_rest_api(){
register_rest_route('wtrest','events',array(
'methods' => WP_REST_SERVER::READABLE,
'callback' => 'wtEventResults'
));
}
function wtEventResults($data){
$events = new WP_Query([
'post_type' => 'event',
'post__in' => array( (int)$data['id'] )
]);
$eventsResults = [];
while($events->have_posts()){
$events->the_post();
array_push($eventsResults , [
'content' => apply_filters( 'the_content' , get_the_content())
]);
}
return $eventsResults;
}
I'm getting the result but the shortcodes aren't parsing and their just plain text . Thanks in advance
thanks to @muka.gergely I've found the answer here.
final code that worked for me is here:
add_action( 'rest_api_init' , 'wt_rest_api');
function wt_rest_api(){
register_rest_route('wtrest','events',array(
'methods' => WP_REST_SERVER::READABLE,
'callback' => 'wtEventResults'
));
}
function wtEventResults($data){
WPBMap::addAllMappedShortcodes(); // This does all the work
$events = new WP_Query([
'post_type' => 'event',
'post__in' => array( (int)$data['id'] )
]);
$eventsResults = [];
while($events->have_posts()){
$events->the_post();
array_push($eventsResults , [
'content' => apply_filters( 'the_content' , get_the_content() )
]);
}
return $eventsResults;
}
Hope it saves you some time