web-dev-qa-db-fra.com

Extrait de mise à jour en masse

J'utilise un thème de photoblog qui, lors de la création d'un nouveau message, prend la pièce jointe et enregistre une chaîne modifiée "img src" dans le champ extrait. Il utilise ensuite

<?php the_excerpt(); ?> 

pour afficher la vignette sur des pages telles que le menu de la page d’accueil, les pages de catégories et les archives de balises.

Mon site Web contient quelques centaines de photos et le thème ne crée pas de manière rétroactive les vignettes basées sur des extraits pour les anciens messages.

Le développeur ne prend plus officiellement en charge ce thème et, après avoir parcouru leur section de forum d'assistance, ils ont même admis "malheureusement, je ne sais pas comment créer de vieilles vignettes." - citation: http://everydays.hassii.com/archives/2541/comment-page-1#comment-9381

Voici le peu de code qu'ils utilisent lors de la création de cet extrait d'informations miniatures sur les nouveaux messages/les mises à jour.

// ===== PB AUTO-INSERT EXCERPT ===== //
function pb_insert_excerpt(){
    $post_data = &$_POST;
    $post_id = $post_data['ID'] ;
    $post_title = $post_data['post_title'];
    $post_excerpt = $post_data['post_excerpt'];
    $existing_img = strstr($post_excerpt, 'jpg');
    if($post_data['post_excerpt'] = isset($post_data['excerpt'])) {
            if ($existing_img) {
                return $post_excerpt;
        } else {
                $arrImages =& get_children('post_type=attachment&post_mime_type=image&post_parent=' . $post_id); 
                if($arrImages) {
                    $arrKeys = array_keys($arrImages); 
                    $iNum = $arrKeys[0];
                    $sThumbUrl = wp_get_attachment_thumb_url($iNum); 
                    $thumbWidth = get_option("thumbnail_size_w");
                    $thumbHeight = get_option("thumbnail_size_h");
                    $sImgString = '<img src="' . $sThumbUrl . '" width="'.$thumbWidth.'" height="'.$thumbHeight.'" alt="'.$post_title.'" title="'.$post_title.'" />' ;          
                    return $sImgString;
                }   
            }
    }   
}

add_filter('excerpt_save_pre', 'pb_insert_excerpt');

À l'aide de cette même logique, est-il possible d'analyser tous les anciens messages et de créer la section de l'extrait img src?

1
Pat

Problème 1: créer les données de l'extrait

Cela devrait être assez facile à faire directement avec SQL.

UPDATE         wp_posts AS post
    INNER JOIN wp_posts AS attachment
        ON     attachment.post_type = 'attachment' AND
               post.ID = attachment.post_parent
    SET        post.post_excerpt = CONCAT('<img src="', attachment.guid,'" />')
    WHERE      post.post_excerpt = '';

Ceci est évidemment une "solution ponctuelle" qui implique que vous avez accès à la base de données.

Si le plug-in autorise plus d'une image sur un message et utilise des images de couverture pour identifier laquelle des images de la galerie de l'article est la "valeur par défaut" utilisée dans l'extrait, nous devons étendre les clauses de jointure pour l'enregistrement. wp_postmeta si la pièce jointe est une image de couverture ou non.

Problème 2: mise à jour des URL dans l'extrait (de guid à vignette)

UPDATE         wp_posts AS post
    INNER JOIN wp_posts AS attachment
        ON     attachment.post_type = 'attachment' AND
               post.ID = attachment.post_parent
    SET        post.post_excerpt = CONCAT('<img src="', REPLACE(attachment.guid, '.jpg', '-100x100.jpg'),'" />')
    WHERE      post.post_excerpt = CONCAT('<img src="', attachment.guid,'" />');

Cela ne devrait fonctionner que pour les fichiers JPG, et cela appliquera le suffixe de - 100x100 , remplacez par le suffixe les dimensions que vous utilisez. Pourvu que vos dimensions soient les mêmes pour tous les fichiers.

Sinon, nous avons besoin d'un script php pour lire les données postmeta afin d'accomplir cette tâche.

1
Mihai Stancu