私は新しい投稿を作成するときに投稿の添付ファイルを取得し、抜粋フィールドに修正された "img src"文字列を保存するフォトブログテーマを使用しています。それはそれから使用します
<?php the_excerpt(); ?>
ホームページメニュー、カテゴリページ、タグアーカイブなどのページにサムネイルを表示します。
私のウェブサイトはそれの上に数百の写真を持っています、そしてテーマは遡及的に古い投稿のための抜粋ベースのサムネイルを作成していません。
開発者はもはや正式にこのテーマをサポートしていません、そして、彼らのサポートフォーラムのセクションを熟読した後に、彼らは「残念ながら、私は古いサムネイルを作成する方法を知りません」とさえ認めました。 - 引用: http://everydays.hassii .com/archives/2541/comment-page-1#comment-9381
これは、新規/更新された投稿に関するこの抜粋サムネイル情報を作成する際に使用しているコードの一部です。
// ===== 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');
これと同じロジックを使用して、すべての古い投稿をスキャンして抜粋img srcサムネイルセクションを作成することは可能ですか?
これは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 = '';
これは明らかに「1回限りの修正」であり、データベースにアクセスできることを意味します。
プラグインが1つの投稿に複数の写真を許可し、投稿のギャラリーのどの写真が「デフォルト」であるかを識別するためにカバー写真を使用している場合、チェックインするためにjoin句を拡張する必要があります添付ファイルが表紙の写真であるかどうか。
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,'" />');
これはJPGファイルに対してのみ機能するはずで、 - 100x100のサフィックスが適用されます。使用している寸法はサフィックスに置き換えてください。寸法がすべてのファイルで同じであると仮定します。
そうでない場合は、このタスクを実行するためにpostmetaデータを読み取るためのphpスクリプトが必要です。