Brauchen Sie eine Methode, um zu verhindern, dass WP zwischen meinen Shortcodes hinzufügt

Ich habe ein paar Dinge ausprobiert, um das zwischen den Shortcodes erstellte
zu entfernen, ich fand eins in einem anderen Thread, es sah vielversprechend aus, aber es hat nicht geklappt:

 function the_content_filter($content) { $block = join("|",array("category_product_list", "category_products")); $rep = preg_replace("/(

)?\[($block)(\s[^\]]+)?\](|
)?/","[$2$3]",$content); $rep = preg_replace("/(

)?\[\/($block)](|
)?/","[/$2]",$rep); return $rep; } add_filter("the_content", "the_content_filter");

Ich habe gelesen, dass Wpautop den Trick machen könnte, aber nichts funktioniert für mich. Muss ich meinen tatsächlichen Shortcode irgendwie ändern?

Hier ist einer der Shortcodes, mit denen ich arbeite:

 function category_product_list( $atts ) { extract(shortcode_atts(array( 'category' => '', 'per_page' => -1, 'orderby' => 'title', 'order' => 'asc' ), $atts)); $meta_query = WC()->query->get_meta_query(); $tax_query = WC()->query->get_tax_query(); $tax_query[] = array( 'taxonomy' => 'product_cat', 'field' => 'slug', 'terms' => array( esc_attr($category) ), 'operator' => 'IN', ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'posts_per_page' => $per_page, 'orderby' => $orderby, 'order' => $order, 'meta_query' => $meta_query, 'tax_query' => $tax_query ); $products = new WP_Query( $args ); if ( $products->have_posts() ) : $term_list = wp_get_post_terms($products->post->ID, 'product_cat', array("fields" => "all")); $first_term = $term_list[0]; $first_term_name = $first_term->name; $url = get_permalink(); $id = $products->post->ID; // $html_out = '

Courses

'; $html_out = '
    '; $html_out .= '
  • ' . $first_term_name . ''; $html_out .= '
      '; while ($products->have_posts()) : $products->the_post(); $product = get_product( $products->post->ID ); $course_title = get_the_title(); $url = get_permalink(); $id = $products->post->ID; // Output product information here $html_out .= '
    • ' . $course_title . '
    • '; endwhile; $html_out .= '
    '; $html_out .= '
  • '; $html_out .= '
'; else : // No results $html_out = "No Courses Found."; endif; wp_reset_postdata(); return $html_out; } add_shortcode( 'category_product_list', 'category_product_list' );

Solutions Collecting From Web of "Brauchen Sie eine Methode, um zu verhindern, dass WP zwischen meinen Shortcodes hinzufügt"

Ich habe einen einfachen Shortcode erstellt und ihn zweimal auf einer Seite hinzugefügt:

 [my-shortcode]something[/my-shortcode] [my-shortcode]else[/my-shortcode] 

Wie Sie sehen können, habe ich nach dem ersten Shortcode einen Zeilenumbruch (
) hinzugefügt. So im Frontend wird es auch so gezeigt:

 something else 

Und im HTML:

 something 
else

the_content ich auch den the_content Filter benutzt aber mit strtr() so:

  function remove_br_from_shortcodes($content){ // look for the string "]
" and replace it just with "]" $replace = array ( ']
' => ']' ); $content = strtr($content, $replace); return $content; } add_filter('the_content', 'remove_br_from_shortcodes');

Nach dem Aktualisieren der Seite zeigt das Frontend jetzt:

 something else 

Im HTML:

 something else 

Wie der Name des the_content Filters bereits andeutet, handelt es sich um einen Filter für den normalen Post- / Seiteninhalt , nicht etwa für Text-Widgets oder Auszüge.

Wenn Sie auch Absätze (

) entfernen möchten, fügen Sie diese bitte in das $replace Array ein: (Achten Sie auf Ihre Kommas!)

 '

[' => '[', ']

' => ']',

Mit der function PHP strtr() können Sie bestimmte Zeichen in einer Zeichenfolge ersetzen. Mehr hier zu lesen.

Versuchen Sie, die Shortcodes in

oder Tags einzufügen, wenn das eine Option ist.