Shortcode in einer benutzerdefinierten Metabox

Ich versuche, einen Shortcode von einem Plugin meiner benutzerdefinierten Metabox hinzuzufügen. Ich habe gelesen, dass es nicht die Sache ist, aber in diesem Fall brauche ich es zu arbeiten. Der Client fügt möglicherweise kein Video hinzu, fügt aber möglicherweise ein Bild hinzu, oder es muss sichergestellt werden, dass es weiterhin für Standardinhalte verwendet werden kann.

Das Problem, das ich habe, ist, dass es nur den Shortcode wie folgt ausgibt – [youtube id = “vfGZZJnoJ0U”]

Ich habe versucht, meiner Metabox Filter hinzuzufügen, zeige dies aber immer noch.

Dies ist mein benutzerdefiniertes Metabox-Setup:

add_action('add_meta_boxes', 'testimonials_meta_box'); function testimonials_meta_box() { add_meta_box('testimonials_content_id', 'Testimonial Image/Video', 'testimonials_meta_box_cb', 'kleiser_testimonials', 'normal', 'high'); } function testimonials_meta_box_cb($post) { global $post; wp_nonce_field('testimonial_content_nonce', 'testimonial_content_meta_box_nonce'); $values = get_post_custom($post->ID); $left_content = isset($values['testimonial_content']) ? $values['testimonial_content'][0]: ''; wp_editor($left_content, 'testimonial-content'); } function testimonial_content_save($post_id) { if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; if(!isset($_POST['testimonial_content_meta_box_nonce']) || !wp_verify_nonce($_POST['testimonial_content_meta_box_nonce'], 'testimonial_content_nonce')) return; if(!current_user_can('edit_pages')) return; if(isset($_POST['testimonial-content'])) { update_post_meta($post_id, 'testimonial_content', $_POST['testimonial-content']); } } add_action('save_post', 'testimonial_content_save'); 

Die einzige seltsame Sache, die ich tue, ist, dass ich jeden Posts-Wert der Metabox in einem Array ablege und dann eine for-Schleife mache und sie ausgäbe. Dieser Code ist:

Bearbeiten:

Dies ist meine Template-Seite, die meinen ganzen Code enthält:

 
'kleiser_testimonials', 'posts_per_page'=> -1 )); ?> have_posts()) : $counter = 0; $total = $wp_query->post_count; $testimonialsContentArray = array(); ?> <!--
-->
have_posts()) : the_post(); ?> get_the_ID(), 'title' => get_the_title(), 'content' => get_the_content(), 'testimonialMedia' => $media )); ?> <div class='testimonial' data-id=''>
<div class='testimonial_details' data-testimonial=''>

<?php if($counter % 5 == 0 && $counter

Ich kratze mich längere Zeit am Kopf und finde nicht heraus, warum ich den Shortcode nicht zur Arbeit bringen kann.

Jede Hilfe würde wirklich geschätzt werden

Danke im Voraus

Solutions Collecting From Web of "Shortcode in einer benutzerdefinierten Metabox"

Ich habe bemerkt, dass du get_the_content() , aber es wird ungefilterten Inhalt zurückgeben.

Die Shortcodes werden über den Filter the_content mit der Priorität 11 generiert.

Also wenn du willst

  • Nur die generierten Shortcodes, probiere:

     'content' => do_shortcode( get_the_content() ) 
  • the_content es durch den the_content filtern, versuchen Sie the_content :

     'content' => apply_filters( 'the_content', get_the_content() ) 
  • the_content() function_content the_content() zu simulieren, versuchen Sie the_content() :

     'content' => str_replace(']]>', ']]>', apply_filters( 'the_content', get_the_content() ) ) 

Verwenden do_shortcode() function do_shortcode() . In Ihrem Fall wäre das in etwa so:

 < ?php echo do_shortcode(wpautop($testimoninalContent['testimonialMedia'])); ?> 

wpautop fügt dem Inhalt nur Leerzeichen und Absätze hinzu.

Könnten Sie es versuchen, anstatt

 echo wpautop($testimoninalContent['testimonialMedia']); 

um die ganzen Inhaltsfilter mit zu benutzen

 echo apply_filters( 'the_content', $testimoninalContent['testimonialMedia'] ); 

Auf diese Weise wird alles, was das benutzerdefinierte Feld enthält (eine Verknüpfung zu einem Video, einem Bild, einem Text oder einem the_content() als the_content() (und führt so Shortcodes aus).

Ich kann mich hier irren, also lassen Sie es uns wissen?