Jak usunąć zakodowane wymiary miniatur?

15

Jak mogę usunąć atrybuty szerokości i wysokości z post_thumbnail podczas wstawiania za pomocą <?php the_post_thumbnail(); ?>?

<img width="800" height="533" src="http://domain.com/wp-content/uploads/2011/02/image.jpg" class="attachment-post-thumbnail wp-post-image" />
Carson
źródło
poszukaj pliku thumbnail.php, nie jestem pewien, ale zazwyczaj pliki zawierają kodowanie na twardo
Niraj Chauhan
Jeśli się zastanawiasz, chcę mieć możliwość modyfikowania szerokości i wysokości za pomocą CSS - dokładniej ustaw maksymalną szerokość i pozwól, aby wysokość sama ustawiła się zamiast domyślnie ustawionej na stałe.
Carson
użyj firebuga, aby uzyskać dokładną klasę lub identyfikator, lub podaj mi swój adres URL
Niraj Chauhan
2
Zmiana czegokolwiek w pliku poza kompozycją (na przykład post-thumbnail-template.php) byłaby złym pomysłem, ponieważ każda aktualizacja WordPress go nadpisze.
Carson,
Co sprawia, że ​​uważasz, że musisz usunąć atrybuty, aby robić to, co chcesz?
t31os

Odpowiedzi:

25

Powiązane: Filtrować, aby usunąć atrybuty wymiarów obrazu?

Istnieje filtr, post_thumbnail_htmlktóry odbiera jako argument pełny element HTML reprezentujący obraz miniatury postu, zanim zostanie powtórzony na stronie. Możesz odfiltrować wymiary z odrobiną wyrażenia regularnego:

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 );

function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}
Złote Jabłka
źródło
Nie działa mi. add_filter („post_thumbnail_html”, „remove_thumbnail_dimensions”, 10, 3); funkcja remove_thumbnail_dimensions ($ html, $ post_id, $ post_image_id) {if (wp_is_mobile ()) {$ html = preg_replace ('/ (width | height) = \ "\ d * \" \ s /', "", $ html ); } return $ html; }
dlopezgonzalez
Spowoduje to usunięcie szerokości / wysokości ze wszystkich przypadków the_post_thumbnail()użycia.
Dario Zadro
5

możesz po prostu złapać adres URL kciuka i samodzielnie umieścić go w tagu img:

<?php
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'your_thumb_handle' );
?>
<img src="<?php echo $thumbnail['0']; ?>" />
Milo
źródło
1
To jedyne rozwiązanie, na jakie się natknąłem. Miałem tylko nadzieję, że istnieje sposób, aby to zrobić bez obejścia.
Carson,
Ale musisz również zapytać o atrybuty alt i title
MZAweb
0
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

wykona to zadanie, „the_contnet” usunie całą szerokość i wysokość obrazu tekstu posta.

Książę Yin
źródło
Proszę edytować swoje odpowiedzi i dodać wyjaśnienie: dlaczego to może rozwiązać problem?
fuxia
0

Wolę to rozwiązanie poniżej, ponieważ nie dokonuję globalnego zastąpienia funkcją. Zostanie to włączone do plików motywu.

<?php echo preg_replace( '/(width|height)="\d*"/', '', get_the_post_thumbnail( get_the_ID(), 'large' ) ); ?>

Możesz zamienić „duże” na „miniatura”, „średnia”, „pełna” lub niestandardowy rozmiar obrazu zadeklarowany w motywie.

Dario Zadro
źródło