Get_template_part im Filter?

Ist es möglich, die Galerie aus dem Inhalt zu entfernen, sondern an ihrer Stelle get_template_part('content-gallery'); ?

Ich habe dieses Stück Code, der die Galerie aus dem Post entfernt, aber ich füge content-gallery.php ein, das die Galerie so ergreift und formatiert, wie ich es wollte. Dies funktioniert gut, aber Galerie wird am Ende des Post eingefügt, was das Problem ist, muss es in jeder Position eingefügt werden, die es in der Post ist. Ich möchte nur eine schnelle Lösung.

functions.php – entfernt die Galerie

 add_filter('the_content', 'remove_gallery'); function remove_gallery($content) { preg_match_all( '/'. get_shortcode_regex() .'/s', $content, $matches, PREG_SET_ORDER ); if ( ! empty( $matches ) ) { foreach ( $matches as $shortcode ) { if ( 'gallery' === $shortcode[2] ) { $pos = strpos( $content, $shortcode[0] ); if ($pos !== false) return substr_replace( $content, '', $pos, strlen($shortcode[0]) ); } } } return $content; } 

content-gallery.php – manuelle Galerie – rufen Sie Bilder auf und formatieren Sie sie einfach

 $gallery = get_post_gallery( get_the_ID(), false ); $gallery_attachment_ids = explode( ',', $gallery['ids'] ); $img_attribs = wp_get_attachment_image_src($gallery_attachment_ids[0], 'gallery_main' ); // returns an array if( $img_attribs ) : foreach($gallery_attachment_ids as $id) : $img = wp_get_attachment_image_src($id, 'gallery_thumb' ); $img_full = wp_get_attachment_image_src($id, 'gallery_main' ); $img_alt = get_post_meta(get_the_ID(), '_wp_attachment_image_alt', true); ?> 
<img class="thumb img-responsive" data-url="" id="" src="" alt="" title="" />

Dies ist in page.php (Ich müsste manuelle Aufrufe für get_template_part() entfernen und es innerhalb der Filterfunktion aufrufen.

    

BEARBEITEN

Volle Filterfunktion

 add_filter('the_content', 'remove_gallery'); function remove_gallery($content) { preg_match_all( '/'. get_shortcode_regex() .'/s', $content, $matches, PREG_SET_ORDER ); if ( ! empty( $matches ) ) { foreach ( $matches as $shortcode ) { if ( 'gallery' === $shortcode[2] ) { $pos = strpos( $content, $shortcode[0] ); if ($pos !== false) { ob_start; get_template_part('content-gallery.php'); $contentgallery = ob_get_contents(); ob_end_clean(); return substr_replace( $content, $contentgallery, $pos, strlen($shortcode[0]) ); } } } } return $content; } 

Solutions Collecting From Web of "Get_template_part im Filter?"

Sie können die Ausgabepufferung verwenden, um die Vorlagenausgabe zu erhalten und sie anstelle des geleerten Shortcode-Inhalts zurückzugeben:

 if ($pos !== false) ob_start; get_template_part('content-gallery.php'); $contentgallery = ob_get_contents(); ob_end_clean(); return substr_replace( $content, $contentgallery, $pos, strlen($shortcode[0]) );` } 

BEARBEITEN Es könnte es einfacher machen, den Galerien-Shortcode zu ersetzen.

 remove_shortcode('gallery'); add_shortcode('gallery','my_content_gallery'); function my_content_gallery() { ob_start; get_template_part('content-gallery.php'); $contentgallery = ob_get_contents(); ob_end_clean(); return $contentgallery; }