Shortcode mit WP_Query mehr als einmal auf einer Seite

Ich habe ein Problem, das ich für mehrere Tage nicht lösen kann – Ich habe einen Shortcode, der die Tabelle mit meinen CPT – Posts anzeigt und es funktioniert einwandfrei (bei Verwendung von Shortcode auf einer Seite / Post), aber nicht bei Verwendung von mpultile Zeiten auf einer Seite oder Post (dort ist kein Fehler, aber nur der erste Shortcode wird gedruckt)

Hier ist mein Code:

if ( ! function_exists( 'odwpdp_add_shortcode_1' ) ) : function odwpdp_add_shortcode_1( $atts, $content = null ) { global $wp; // Collect attributes $attrs = shortcode_atts( array( 'count' => 5, 'title' => __( 'Soubory ke stažení', ODWPDP_SLUG ), 'show_title' => 1, 'show_pagination' => 1, 'orderby' => 'title', 'order' => 'ASC', 'enable_sort' => 1, ), $atts ); // Sanitize attributes $attrs['count'] = (int) $attrs['count']  'odwpdp-metabox-1', 'type' => 'DATE' ); } $odwpdp_paged = (int) filter_input( INPUT_GET, 'odwpdp_paged', FILTER_VALIDATE_INT ); $query_args['paged'] = max( 1, $odwpdp_paged ); // Create query $query = new WP_Query( $query_args ); // Current URL $current_url = home_url( add_query_arg( array(), $wp->request ) ); // Render template ob_start( function() {} ); include_once( ODWPDP_PATH . '/templates/shortcode-1.phtml' ); $html = ob_get_flush(); return $html; } endif; add_shortcode( 'soubory_ke_stazeni', 'odwpdp_add_shortcode_1' ); 

Und hier ist eine Vorlagendatei ( shortcode-1.phtml ):

    <span title="" class="arrow-up used-order">  <a href="https://wordpress.stackexchange.com/questions/257966/shortcode-with-wp-query-more-than-once-on-one-page/" title="" class="arrow-up">   <span title="" class="arrow-down used-order">  <a href="https://wordpress.stackexchange.com/questions/257966/shortcode-with-wp-query-more-than-once-on-one-page/" title="" class="arrow-down">   

post_count > 0 ) : $posts = $query->get_posts(); ?> ID, 'odwpdp-metabox-1', true ); $putoff_date = get_post_meta( $post->ID, 'odwpdp-metabox-2', true ); $file_info = odwpdp_get_file_info( $post->ID ); ?> max_num_pages > 0 ) : ?>
<img src="https://wordpress.stackexchange.com/questions/257966/shortcode-with-wp-query-more-than-once-on-one-page/" class="file-icon"> <?php printf( '%s
%s %s', $file_info['url'], $post->post_title, __( 'Velikost:', ODWPDP_SLUG ), $file_info['size'] ); ?>

post_count, $query->found_posts ); ?>

Danke für die Hilfe. Vollständige Codes sind auf GitHub .

Solutions Collecting From Web of "Shortcode mit WP_Query mehr als einmal auf einer Seite"

Es ist so viel los, dass der Code in deiner Frage schwer zu befolgen ist. Außerdem sagen Sie nicht, was passiert, wenn Sie den Shortcode mehrmals auf einer bestimmten Seite / Post verwenden.

So kann ich nicht sicher sein, aber ich denke, das Problem ist, dass Sie anrufen müssen:

 wp_reset_postdata () ; 

am Ende Ihrer Shortcode-function, da Ihr Shortcode zu einer Nested Loop führt .

Edit: mit neuer Lösung

Das Problem ist das:

 include_once( ODWPDP_PATH . '/templates/shortcode-1.phtml' ); 

Diese Datei ist, wie der Name der PHP-function andeutet, nur beim ersten Aufruf der odwpdp_add_shortcode_1() function odwpdp_add_shortcode_1() Da diese Datei Ihre Ausgabe erzeugt, erhalten Sie für die erste Verwendung Ihres Shortcodes keine Ausgabe .

Was Sie also tun müssen, ist folgendes:

in shortcode-1.phtml

wrap the func def für print_order() ist a !function_exists() , wie in:

 if (!function_exists ('print_order')) : function print_order ($url, $atrs, $cur) { // existing code for body of print_order() } endif;  

in der Datei, die odwpdp_add_shortcode_1 () definiert

Veränderung

 include_once( ODWPDP_PATH . '/templates/shortcode-1.phtml' ); 

zu

 include ( ODWPDP_PATH . '/templates/shortcode-1.phtml' ); 

und du solltest golden sein.

Hoffe das hilft.