Mass update excerpt

时间:2012-05-27 作者:Pat

我正在使用一个photoblog主题,在创建一篇新文章时,它会获取文章附件,并将修改后的“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缩略图部分?

1 个回复
最合适的回答,由SO网友:Mihai Stancu 整理而成

问题1:创建摘录数据这应该很容易直接用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 = \'\';
这显然是一个“一次性修复”,意味着您可以访问数据库。

如果插件允许在一篇文章上显示多张图片,并且正在使用封面图片来确定文章库中的哪些图片是摘录中使用的“默认”图片,那么我们需要扩展连接子句,以在wp\\U Posteta中检查附件是否为封面图片。

问题2:更新摘录中的URL(从guid到缩略图)

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, 替换后缀中使用的任何尺寸。前提是所有文件的尺寸都相同。

如果没有,我们需要一个php脚本来读取Posteta数据以完成此任务。

结束

相关推荐

在我的主题的Conent.php文件上使用自定义字段

以下代码中是否有错误?当我在内容中使用以下代码时。我的主题的php文件,然后博客上什么也没有显示,似乎有一些错误。当我评论下面的代码时,一切都恢复了正常。<?php if (empty(get_custom_field_value(\"signature\",\"\"))) : ?> &mdash; <?php the_category( \'<span>/</span>\' ); ?> <?