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?
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.
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.