2016-08-04 22 views
1

Ich arbeite an einem Web-Service (API), wo ich erhalte Ergebnis WP_query() -Funktion und parse das im JSON-Format. was wird weiter in Android-Anwendung verwenden. Das Problem ist die POST_CONTENT i mit Abfrage bin immer durch visuelle Komponisten und den gesamten Inhalt besteht, ist in Form eines solchen Tags wieSo entfernen Sie alle visuellen Composer shortcode/tags von wordpress post_content abgerufen mit benutzerdefinierten Abfrage

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

Ich möchte aus dem Inhalt all diese Shortcode entfernen/ausziehen und nur abrufen Ebene Text von ihm. Gibt es eine visuelle Komponist Funktion, durch die ich diese Sache hier

<?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); 
} 
} 
?> 
+0

können Sie versuchen, 'strip_shortcodes()' und diese Funktion von WordPress zur Verfügung gestellt. –

+0

@Rocky strip_shortcodes() Nicht funktioniert, bereits ausprobiert –

+2

Haben Sie es versucht? regex 'preg_replace (" ~ (?: \ [/?) [^/\]] + /? \] ~ s ", '', $ der_inhalt;' –

Antwort

1

erreichen können, können Sie versuchen und einfach einige kurze Codes in Array hinzufügen, die Sie benötigt und außerdem finden Sie alle Kurzwahlnummern über folgenden Code entfernen.

$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; 

Sie wollen einige Kurzwahlnummern bleiben Sie nicht strip_shortcodes() dafür verwenden können.

+0

für mich jetzt funktioniert dieser code str_replace ('[vc_column_inner width = "1/3 "] ',' ', preg_replace (" ~ (?: \ [/?) [^/\]] + /? \] ~ S ",' ', $ po-> post_content) gibt es tatsächlich verschiedene Parameter in vc_column, wenn sie also kommen, werde ich sie mit str_replace entfernen. Deine Antwort hilft ein wenig. Ich werde es upvote aber es ist nicht die genaue Lösung –

+0

Ich habe Code aktualisiert auch Parameter nicht wichtig in shortcode, überprüft diese Regex nur shortcode, die Sie in Array verwendet haben. Sie können diesen Code immer noch 'VC_COLUMN_INNTER' im Array übergeben und dann im Inhalt mit Parametern akzeptieren. –

+0

yeah es funktioniert, danke –