WordPress wpautop / shortcode erzeugt ungültiges Markup

Ich stelle fest, dass es in meinem Shortcode ein ungültiges Markup gibt. Es ist in wpautop wenn ich wpautop tho deaktiviere

 function shortcode_banner($attrs, $content = '') { echo ' --- ' . $content . ' --- '; $html = ''; die($html); } 

Wenn Autop aktiviert ist, bekomme ich (beachten Sie das Schließen

am Anfang?)

 --- 

The title

xxx ... xxx ... ---

Wenn ich behindert bin, bekomme ich

  --- 

The header

xxx ... xxx ... ---

UPDATE : Ich merke das passiert nur, wenn ich nach meinem Shortcode ein Tag habe (zB

). Mögen:

 [banner] 

Test

Wenn ich habe

 [banner] xxx ... 

Es ist in Ordnung, außer WordPress fügt ein

Solutions Collecting From Web of "WordPress wpautop / shortcode erzeugt ungültiges Markup"

Versuche dies:

 // replaces [banner ...] .. [/banner] with  before the_content filters run add_filter('the_content', 'protect_my_shortcode', -100); function protect_my_shortcode($content){ return preg_replace_callback('/\[(banner)\b(.*?)(?:(\/))?\](.+?)\[\/\1\]/s', 'protect_my_shortcode_callback', $content); } function protect_my_shortcode_callback($matches){ global $__banners; $id = ''; $__banners[$id] = do_shortcode($matches[0]); // or '['.$matches[1].' '.$matches[2].']'.$matches[4].'[/'.$matches[1].']' // if you need to run any filters on the shortcode content ($matches[4]) return $id; } // replaces  with the processed shortcode after all the filters run add_filter('the_content', 'unprotect_my_shortcode', 100); function unprotect_my_shortcode($content){ global $__banners; return str_replace(array_keys($__banners), array_values($__banners), $content); } 

Ich weiß nicht, was dieses Problem verursacht, aber Sie können die function force_balance_tags() verwenden, um das Markup force_balance_tags() zu bereinigen.

Beachten Sie, dass in der Praxis einige Einschränkungen für die Verwendung von force_balance_tags() .