Filtro per rimuovere gli attributi dimensionali delle immagini?
Sto lavorando su un sito basato su un template CSS a larghezza fluida che imposta una larghezza massima sulle immagini in base alla larghezza della colonna che le contiene, e ho bisogno di rimuovere gli attributi dimensionali inline width e height che WordPress aggiunge alle immagini.
Lo sto facendo con le mie immagini in evidenza usando questo filtro:
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 );
function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) {
// Rimuove gli attributi width e height dall'HTML
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
return $html;
}
So che posso applicare lo stesso filtro a the_content, se necessario. Ma c'è un modo migliore per farlo?

Grazie a tutti!
Il filtro image_send_to_editor era quello che stavo cercando... grazie @t31os per averlo segnalato.
Ecco le mie funzioni ora.
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
return $html;
}
Questo rimuove gli attributi di dimensione inline dalle immagini recuperate con the_post_thumbnail()
e impedisce che questi attributi vengano aggiunti alle nuove immagini inserite nell'editor. Non li rimuove dalle immagini recuperate tramite wp_get_attachment_image
o altre funzioni correlate (non ci sono hook lì dentro), ma quei casi possono essere gestiti nei file dei template quando necessario.

Ho dovuto rimuovere \s dalla regex. Dopo di che, ha funzionato bene. Penso che fosse perché non avevo uno spazio finale dopo l'ultimo doppio apice nell'impostazione dell'altezza.

@MattSlay Sono solo io ad avere problemi con la modifica permanente del contenuto del sito? Un tema responsive non dovrebbe dover modificare il contenuto del sito web per farlo formattare correttamente. Voto per rimuovere il filtro da image_send_to_editor
e invece aggiungerlo a the_content
- come in questo post del blog. Questo separa la logica di presentazione dal contenuto.

@BFTrick - Mi sembra una questione di contesto. Per un tema responsive, sarei d'accordo con te perché non puoi dipendere dal fatto che il contenuto esistente sia stato processato in questo modo, e non sai se il prossimo tema installato avrà bisogno di quegli attributi di dimensione.
Nel mio caso, stavo costruendo un'applicazione in cui il tema era integrale al contenuto, quindi ho scelto il metodo meno intensivo in termini di processore di elaborare le immagini quando venivano aggiunte per la prima volta. Ma fai un buon punto.

Ho modificato un po' questo script. Grazie per l'aiuto!
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
// Solo per il framework Genesis
add_filter( 'genesis_get_image', 'remove_thumbnail_dimensions', 10 );
// Rimuove anche le dimensioni delle immagini allegate
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
return $html;
}

Attenzione però. Filtrare the_content filtrerà anche i video di YouTube e qualsiasi altro attributo width/height.

Se hai impostato la dimensione dell'immagine in function.php come "gallery"
add_image_size( 'gallery', 200, 120, true );
puoi rimuovere la larghezza e l'altezza per una specifica dimensione dell'immagine come "gallery":
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 4 );
function remove_thumbnail_dimensions( $html, $post_id, $post_image_id,$post_thumbnail) {
if ($post_thumbnail=='gallery'){
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
}
return $html;
}

Applicare quel filtro a the_content
lo attiverà per tutti i contenuti. Questo sarà efficace, ma potrebbe influenzare le prestazioni e il tempo di caricamento del tuo sito. Sarebbe meglio se dicessi a WordPress di non inserire i tag inline per larghezza e altezza quando inserisci le immagini in primo luogo.
Sfortunatamente, gli script che effettivamente inseriscono l'immagine sono costruiti in JavaScript e interagiscono con l'editor wysiwyg TinyMCE. Potrebbe esserci un modo per agganciarsi direttamente, ma non utilizzando le chiamate standard add_filter()
.

@t31os - Penso sia proprio quello che cercavo! Non so come abbia fatto a non vedere quell'hook prima.

Spero davvero ti sia utile, sembra possa fare al caso tuo...facci sapere come va. :)

@t31os Sì, ha funzionato! Grazie! Lo posterò come risposta, a meno che tu non ci arrivi prima.
