如何在保存到数据库之前添加过滤帖子缩略图?

时间:2017-01-19 作者:Leo1234562014

我的主题中有一个函数,可以在base64中对图像进行编码,这非常有效:

function image_encoded($img){
    //set the extension of the image
    $filetype=wp_check_filetype($img);
    // Read image path, convert to base64 encoding
    $imageData = base64_encode(wp_remote_fopen($img));
    // Format the image SRC:  data:{mime};base64,{data};
    $src = \'data:\'.$filetype[\'ext\'].\';base64,\'.$imageData;
    // return the url of the image encoded in base64
    return $src;
}
现在,我想在将图像保存到数据库之前对其进行编码,但此代码不起作用:

function save_page_or_post(){
    global $post;
    if(isset($_POST["_thumbnail_id"])) {
        $thumbnail_compressed = image_encoded($_POST["_thumbnail_id"]);
        update_post_meta($post->ID, "_thumbnail_id", $thumbnail_compressed);
    }
}
add_action(\'save_post\',\'save_page_or_post\');

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

抱歉耽搁了疯狂的一天。。。

所以我看了这个并测试了一些东西。我认为最性感的方式是尝试返回base64编码的img src。。。来源(非双关语)

看看image_downsize filter - 我相信您可以在那里按需执行,或者,如果性能出现问题,您可以在db中缓存字符串。(因此,首先请求图像生成base64字符串,并将其保存在db中)

我的初步测试是决定性的-这将管理通过WYSIWYG编辑器添加到内容中的图像,以及主题功能包含的图像。

顺便说一下,如果您感兴趣并允许我重复使用您的编码代码,我很乐意将其制作成一个开源插件。。。

哦,还有最后一条评论:base64字符串中有一个小错误:

$src = \'data:\'.$filetype[\'ext\'].\';base64,\'.$imageData;
应该是

$src = \'data:image/\'.$filetype[\'ext\'].\';base64,\'.$imageData;
希望这有帮助!

相关推荐

Wp-Content/Themes文件夹在哪里?

我想为我的wordpress站点创建一个子主题(仅供参考),这样我的更改就不会被每次更新所覆盖。显然,我需要在wp-content/themes文件夹中为子主题创建一个子文件夹。问题是,我找不到它。我曾尝试将wp内容和wp内容/主题添加到域中-它生成了一个空白的白色页面。我试着在spotlight文件搜索(是的,我有一台mac电脑)中搜索它(只是“wordpress”),它只找到了一些我在2010年安装的wordpress文件夹,我甚至都不记得做过这些。由于我最近在过去两周(2014年5月)建立了这个网站