web-dev-qa-db-fra.com

Forcer toutes les images à la taille normale dans le modèle de page

J'ai un modèle de page qui affiche tous les articles avec un formatage minimal - pas d'en-tête, de pied de page, de barre latérale, etc.

the_content() est utilisé avec la boucle pour afficher le contenu (texte et images).

J'ai besoin de sortir toutes les images en taille 'pleine' ou 'grande'. Actuellement, the_content() dans la boucle renvoie une balise img semblable à celle-ci - toujours une vignette.

    <img 
src="https://www.example.com/wp-content/uploads/sites/21/2016/10/sample-picture-150x150.jpg" 
    class="attachment-thumbnail size-thumbnail" alt="" 
    size="full" width="150" height="150">

Cela entraîne une résolution de l'image inférieure à celle dont j'ai besoin.

J'ai essayé d'utiliser le filtre wp_get_attachment_image_attributes pour forcer l'attribut size à 'full', mais cela n'a pas fonctionné:

function my_fix_attachment_size($attr, $attachment, $size) {
  // Full width header images
    $attr['size'] = 'full';
  return $attr;
}
add_filter('wp_get_attachment_image_attributes', 'my_fix_attachment_size', 10 , 3);

Comment faire pour que the_content() produise des images en taille réelle? Dans le post, il pourrait y avoir des images ou des galeries, il faut donc gérer les deux.

Notez que je n'ai pas besoin de définir/modifier les tailles d'image, mais de forcer la taille réelle dans la page générée. Je ne m'inquiète pas non plus de la taille de la fenêtre d'affichage, car la page générée est utilisée pour créer un document.

Ajoutée

Après beaucoup de recherches et d'expiration, j'ai proposé une solution qui a fonctionné pour moi (comme réponse ci-dessous). Je soupçonne qu'il existe de meilleures façons de le faire, mais c'est le seul qui a fonctionné pour moi.

Des réponses supplémentaires sont les bienvenues.

2
Rick Hellewell

Ce code fonctionne, bien que je soupçonne qu'il pourrait être plus efficace - ou remplacé par un meilleur filtre. J'ai modifié ce code à partir de la réponse à cette question, qui était le meilleur choix parmi toutes les lunettes que j'ai passées des heures à essayer. entrer la description du lien ici

Vous devrez changer le "plein" à la taille souhaitée (à deux endroits). Vous pouvez également modifier d'autres éléments du tableau selon vos besoins (après la fonction 'extraire').

Je suis ouvert aux moyens plus faciles/plus efficaces de le faire.

 function change_image_size ($output, $attr) {
        global $post;  // needed to use in the id element
        extract(shortcode_atts(array(
            'order' => 'ASC',
            'orderby' => 'menu_order ID',
            'id' => $post->ID,
            'itemtag' => 'dl',
            'icontag' => 'dt',
            'captiontag' => 'dd',
            'columns' => 3,
            'size' => 'thumbnail',
            'include' => '',
            'exclude' => ''
        ), $attr));
        // here's where you can change/add an attribute to the shortcode
        $attr['size'] = 'full'; // change 'full' to desired size
        $id = intval($id);
        if ('Rand' == $order) {
            $orderby = 'none';
        }

        if (!empty($include)) {
            $include = preg_replace('/[^0-9,]+/', '', $include);
            $_attachments = get_posts(array('include' => $include, 
'post_status' => 'inherit', 'post_type' => 'attachment',
 'post_mime_type' => 'image', 'order' => $order,
 'orderby' => $orderby));

            $attachments = array();
            foreach ($_attachments as $key => $val) {
                $attachments[$val->ID] = $_attachments[$key];
            }
        } elseif (!empty($exclude)) {
            $exclude = preg_replace('/[^0-9,]+/', '', $exclude);
            $attachments = get_children(array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby));
        } else {
            $attachments = get_children(array('post_parent' => $id,
 'post_status' => 'inherit', 'post_type' => 'attachment', 
'post_mime_type' => 'image', 'order' => $order,
 'orderby' => $orderby));
        }

        if (empty($attachments)) {
            return '';
        }

    // Essentially these are only changes I've made
    // you can change the $output to your needs; including changing 'full' to your desired image size.
        $output = '';
        foreach ($attachments as $att_id => $attachment) {
            $output .= '<figure>' . wp_get_attachment_image($att_id, 'full') .

'<figcaption>' . wptexturize($attachment->post_excerpt) . 
'</figcaption></figure>';
        }   // change 'full' to desired size

        return $output;
    }
    add_filter('post_gallery', 'change_image_size', 10, 2);
0
Rick Hellewell