So ersetzen Sie das Template_post_thumbnail Template-Tag und zeigen stattdessen das erste im Post-Image an

Ich möchte, dass WordPress das erste Post-Image oder ein Standard-Image zurückgibt, wenn kein vordefiniertes Bild gesetzt wurde. Mein Theme verwendet the_post_thumbnail die function ” the_post_thumbnail , sodass ich nicht alle Referenzen auf eine neue function ändern möchte. Ich würde lieber den core filtern. Hier ist, was ich functions.php hinzugefügt habe:

 add_filter('post_thumbnail_html', 'my_thumbnail_html', 10, 5); function my_thumbnail_html( $html, $post_id, $post_thumbnail_id, $size, $attr ) { global $post, $posts; if (has_post_thumbnail() ) { echo get_the_post_thumbnail( null, $size, $attr ); } else { $first_img = ''; ob_start(); ob_end_clean(); $output = preg_match_all('//i', $post->post_content, $matches); $first_img = $matches [1] [0]; if(empty($first_img)){ $first_img = get_bloginfo("template_url") . '/images/default.gif'; } return $first_img; } } 

Wie hakt ich das richtig?

Solutions Collecting From Web of "So ersetzen Sie das Template_post_thumbnail Template-Tag und zeigen stattdessen das erste im Post-Image an"

Tatsächlich gibt es keinen the_post_thumbnail Filter, der irgendwo angewendet wird.

Der eine, den Sie versuchen könnten zu verwenden und den Inhalt zu ändern, der an the_post_thumbnail function_post_thumbnail geht, ist der Filter post_thumbnail_html , der mit den folgenden Argumenten $html, $post_id, $post_thumbnail_id, $size, $attr .

Herausgefunden:

 function get_attachment_id_from_src( $image_src ) { global $wpdb; $query = "SELECT ID FROM {$wpdb->posts} WHERE guid='$image_src'"; $id = $wpdb->get_var($query); return $id; } add_filter( 'post_thumbnail_html', 'my_post_image_html', 10, 5 ); function my_post_image_html( $html, $post_id, $post_thumbnail_id, $size, $attr ) { if( '' == $html ) { global $post, $posts; ob_start(); ob_end_clean(); $output = preg_match_all('//i', $post->post_content, $matches); $first_img = $matches [1] [0]; if ( empty( $first_img ) ){ $image_id = 129; // default image ID } else { $image_id = get_attachment_id_from_src($first_img); } $html = wp_get_attachment_image( $image_id, $size, false, $attr ); } return $html; }