web-dev-qa-db-fra.com

Comment supprimer toutes les occurrences de vignettes affichées dans mon thème?

en gros, j'aimerais que toutes les mentions de vignettes soient remplacées par une chaîne vide ou quelque chose comme ça. Un morceau de code que je peux simplement ajouter à un plugin ou à functions.php

1
Dany M

Faire une telle chose en remplaçant l'URL n'est pas recommandé, pour diverses raisons. Par exemple, si vous procédez ainsi, vos vignettes ne seront pas supprimées après la suppression de l'image d'origine, car vous avez rompu le lien dans la base de données.

Une autre raison est que si vous essayez d'accéder à une miniature générée par défaut, elle sera redirigée vers un simple chargement de page. Par exemple:

http://example.com/uploads/test.jpg

devient:

http://example.com/

Cela signifie une demande complète à la page d'accueil, le chargement de tous les actifs, la demande de plus de liens, et ainsi de suite.

La bonne approche serait de supprimer les tailles par défaut. Vous pouvez vous connecter au filtre intermediate_image_sizes_advanced et procéder ainsi:

function unset_default_thumbnails( $sizes) {
    unset( $sizes['thumbnail']);
    unset( $sizes['medium']);
    unset( $sizes['medium-large']);
    unset( $sizes['large']);

    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'unset_default_thumbnails');

Terminé. Désormais, il n'y aura plus de vignettes générées après le téléchargement d'une image. Vos propres tailles de vignettes seront toujours générées.

Pour supprimer les vignettes actuelles, vous pouvez utiliser le célèbre plugin Thumbnail Cleaner .

METTRE À JOUR

Sur la base de vos commentaires, j'ai ajouté un moyen de remplacer les URL générées par the_post_thumbnail() par une chaîne vide. Ceci est non recommandé .

add_filter( 'post_thumbnail_html', 'disable_post_thumbnails' ,10 , 5 );
function disable_post_thumbnails( $html, $post->ID, $post_thumbnail_id, $size, $attr ){
    // Check if the image is true
    if ( $html ) {
        switch ( $size ) {
            case 'post-thumbnail':
            case 'thumbnail':
            case 'medium':
            case 'medium-large':
            case 'large':
                // Let's replace the thumbnail's URL with the
                // website's URL for only the default sizes
                $html = str_replace( $html , '<img src="'.site_url().'"/>' , $html );
                break;
            default:
                break;
        }
    }
    // Return the URL
    return $html;
}

Veuillez noter qu'une fois qu'une fonction est déclarée, vous ne pouvez plus la supprimer. Ce que vous pouvez faire est de filtrer ses entrées/sorties, si cela le supporte.

PS: cela peut casser le comportement du plugin/thème. Ceci est juste à des fins éducatives, n'essayez pas cela à la maison.

1
Jack Johansson