Как убрать все шорткоды / теги Visual Composer из post_content WordPress, извлеченного с помощью пользовательского запроса

Я работаю над веб-сервисом (API), где я получаю результат WP_query () и анализирую его в формате JSON. который будет в дальнейшем использовать в приложении для Android.
Проблема в том, что post_content, который я получаю с запросом, составлен визуальным композитором, и весь контент представлен в виде таких тегов, как

[VC_ROW][/VC_ROW][VC_COLUMN]some text[/VC_COLUMN] etc.

Я хочу удалить / удалить все эти шорткоды из содержимого и извлечь из него только простой текст. Есть ли какая-нибудь визуальная функция композитора, с помощью которой я могу достичь этой вещи

<?php
require('../../../wp-load.php');
require_once(ABSPATH . 'wp-includes/functions.php');
require_once(ABSPATH . 'wp-includes/shortcodes.php');
header('Content-Type: application/json');

$post_name = $_REQUEST['page'];

if($post_name!=''){
if($post_name=='services') {

$args = array(
'post_parent' => $page['services']['id'],
'post_type'   => 'page',
'post_status' => 'published'
);
$posts = get_children($args);
foreach($posts as $po){
$services_array[] = array('id'=>$po->ID,'title'=>$po->post_title,'image'=>get_post_meta($po->ID, 'webservice_page_image',true),'description'=>preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', $po->post_content));
}

$post = array(
'status'=>'ok',
'services'=>$services_array
);
echo json_encode($post);
}
}
?>

2

Решение

Здесь вы можете легко и просто добавить в массив необходимые короткие коды, а также удалить все короткие коды с помощью приведенного ниже кода.

$the_content = '[VC_ROW][VC_COLUMN]some text1[/VC_COLUMN] etc.[/VC_ROW][VC_COLUMN_INNTER width="1/3"][/VC_COLUMN_INNTER]';

$shortcode_tags = array('VC_COLUMN_INNTER');
$values = array_values( $shortcode_tags );
$exclude_codes  = implode( '|', $values );

// strip all shortcodes but keep content
// $the_content = preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', $the_content);

// strip all shortcodes except $exclude_codes and keep all content
$the_content = preg_replace( "~(?:\[/?)(?!(?:$exclude_codes))[^/\]]+/?\]~s", '', $the_content );
echo $the_content;

Вы хотите оставить некоторые шорткоды, которые вы не можете использовать strip_shortcodes() для этого.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]