Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >从0打造wordpress插件wp2oc fileshare (1) – 将wp存储后端做进owncloud

从0打造wordpress插件wp2oc fileshare (1) – 将wp存储后端做进owncloud

原创
作者头像
minlearn
修改于 2020-09-28 06:39:33
修改于 2020-09-28 06:39:33
8920
举报
文章被收录于专栏:minlearnprogrammingminlearnprogramming

关键字:wp2oc fileshare,wordpress媒体存进网盘,网盘作为wordpress图床,owncloud wordpress backend storage

其实用网盘做wordpress网站的图床一直是一个很流行的想法,业界存在oss,七牛网盘,百度盘wp2pcs,wp2pcs_sy方案,不过oss,七牛,百度盘pcs这三者始终是面向外接第三方服务,这些都不能得到服务保障,其中免费且最好用的百度盘pcs api需要申请权限,实用性大打拆扣。

这里我们选择的用owncloud作为wordpress的存储后端,这二者生态相似,完成后的插件可以,1,基本(不能完全)代替wordpress原生图片媒体管理功能,2,网盘图床的操作/备份符合在文件夹操作文件习惯,且可以网盘特有的同步方式进行备份和打包,3,当媒体文件很大时,转移wordpress整个媒体也就是改一条外链。不再需要涉及到数据库备份。4,当然还有更多。。

1,确立需求:我们仅需要开发一个APP


我们需要的仅仅是将owncloud存储服务做进wordpress,owncloud有自己的rest api,可以将其服务以wordpress插件的方式做进wordpress形成其后端图床。

我们找到的是ocs filessharing api,为什么必须是fileshare而不是file呢,因为做图床的网盘必须是可以外链的。主要用到的是其get all share部分,所需的参数形式是http://www.xxx.com/ocs/path?=/dir&subfiles=true,首先对于使用到的参数部分我已经在后台加了设置接口了,主要就是四个:

接下来就是开发和调试了

PS:开发是一步一步确立调试的过程,如果说编码确定技术点然后一个一个攻克是寻龙过程,因为龙比较大还是比较容易发现的,而调试则是一个捉虫的过程,常指代开发过程中,这二者所花的时间和过程往往在开发软件和APP(APP指一些小软件只有几个)穿插。尤其是调试部分,需要频繁进行,一个负责的开发实践往往要体现这二者。

在下面的各个技点难点中,我们会同时谈到技术点和调试手段,即龙和虫:

2,技术难点:wordpress plugin开发


1,往wordpress媒体上传框新加选项卡,以下参阅了否子戈的部分代码。

代码语言:txt
AI代码解释
复制
// 在新媒体管理界面添加一个百度网盘的选项
function wp_storage_to_pcs_media_tab($tabs){
// if(!is_wp_to_pcs_active())return;
$newtab = array(‘tab_slug’ => ‘From Owncloud Fileshare’);
return array_merge($tabs,$newtab);
}
add_filter(‘media_upload_tabs’, ‘wp_storage_to_pcs_media_tab’);
// 这个地方需要增加一个中间介wp_iframe,这样就可以使用wordpress的脚本和样式
function media_upload_file_from_pcs_iframe(){
wp_iframe(‘wp_storage_to_pcs_media_tab_box’);
}
add_action(‘media_upload_tab_slug’,’media_upload_file_from_pcs_iframe’);
?>

2,改造owncloud files_sharing app,使之显示链接文件而不是外链共享文件。这是因为原文件中得到的结果是返回所有的共享而不是指定root share dir下的所有文件,而后者才是我们需要的,我使用的是8.0.16的相关文件,简单修改如下:

代码语言:txt
AI代码解释
复制
private static function getSharesFromFolder($params) {
$path = $params[‘path’];
$view = new \OC\Files\View(‘/’.\OCP\User::getUser().’/files’);
if(!$view->is_dir($path)) {
return new \OC_OCS_Result(null, 400, “not a directory”);
}
$content = $view->getDirectoryContent($path);
$result = array();
foreach ($content as $file) {
$result = array_merge($result, array(‘1’=>$file[‘name’]) );
}
return new \OC_OCS_Result($result);
}

3,调试明确rest api一次request/response过程中的数据主要是什么形式的:


好像bookmark用的rest api是第一代,用的是json,而ocs api用的是owncloud api,那为什么二套可以共存呢,这是因为开源软件都是慢慢发展起来的,历史遗留中好的部分会存在很久。

注意,这里会出现不确定的复杂情况比如无限要求密码,此时记得要清空浏览器所有缓存重新粘贴完整url,调试一次就要清空一次才能保障调试结果顺利进行。

4,让owncloud ocs rest api免密码,这是因为上面的调视是可视化进行的,而owncloud ocs api是需要程序内编码验证的,而这些不能浏览器端以传递给URL的方式进行,只能通过CURL http basic auth方式进行,能传给URL的是以上几个提到的配置参数。


代码语言:txt
AI代码解释
复制
function wp_storage_to_pcs_media_list_files(){
$ch = curl_init(“get_option(‘oc2wpfs_oc_server’)”./ocs/v1.php/apps/files_sharing/api/v1/shares?path=get_option(‘oc2wpfs_oc_dir’).”&subfiles=true”);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, “get_option(‘oc2wpfs_oc_user’):get_option(‘oc2wpfs_oc_password’)”);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
……
}

得出以下基本调试视图:

好了,接下来就是把获到的API response解析为上传媒体上的文件,让editor支持选择媒体等部分了。这样插件就基本完成了,留到以后做。。


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png
qrcode.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
将WordPress文章中的外链图片自动下载到本地
WordPress很多插件或者代码都可以实现在编辑文章中自动将外链图片下载到本地,最终我选择了一个叫:Easy Copy Paste的插件。
小狐狸说事
2023/11/17
6170
将WordPress文章中的外链图片自动下载到本地
wordpress优化经历(六)——wordpress图片防盗链
WordPress很多插件或者代码都可以实现在编辑文章中自动将外链图片下载到本地,但是我试了几个效果都不是很好。 最后选择了一个比较笨一点的方法,但是效果贼好。
不愿意做鱼的小鲸鱼
2023/03/23
9640
wordpress优化经历(六)——wordpress图片防盗链
wordpress外贸独立站对接第三方支付通道easylink
IT不难
2024/01/09
5130
wordpress外贸独立站对接第三方支付通道easylink
使用 Dify 和 Moonshot API 构建你的 AI 工作流(一):让不 AI 的应用 AI 化
有了之前的文章铺垫,这篇文章开始,我们聊聊如何折腾 AI 工作流,把不 AI 的应用,“AI 起来”。
soulteary
2024/04/25
4.1K0
使用 Dify 和 Moonshot API 构建你的 AI 工作流(一):让不 AI 的应用 AI 化
WordPress发布文章主动推送到百度,加快收录保护原创
工作实在太忙,也没时间打理网站。最近公司额外交待了一些网站 SEO 方面的优化任务让我关注(这就是啥都要会、啥都要做的苦逼运维的真实写照了...)。 于是抽空看了下百度站长平台,至少看到了 2 个新消
张戈
2018/03/23
1.6K0
WordPress发布文章主动推送到百度,加快收录保护原创
【玩转腾讯云】WordPress配置腾讯云CDN并实现发布/更新文章审核评论自动清理CDN缓存
博客在CDN是加了又下,下了又加。昨天访问张戈博客学习的时候,感叹大牛的站优化的就是好!惊叹速度快之余发现张戈博客的服务器在国外,而且配置也不是很高。(优化出奇迹)
AlexTao
2020/04/22
5.4K3
WordPress主题添加全网热搜榜单教程(WordPress 美化必备)
在 WordPress 网站的美化与功能拓展中,添加全网热搜榜单能显著提升网站的吸引力和实用性。今天为大家带来的WordPress主题添加全网热搜榜单教程,任何WordPress网站都可以使用,能让你的网站轻松拥有这一热门功能,助力网站在众多站点中脱颖而出。本教程适用于 WordPress 6.7.2 及相关版本,通过简单的操作,即可自动获取各大平台前十热搜榜。
用户8482072
2025/03/18
730
WordPress主题添加全网热搜榜单教程(WordPress 美化必备)
【腾讯云的1001种玩法】WordPress 发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存
张戈
2017/03/17
2.8K0
【腾讯云的1001种玩法】WordPress 发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存
使用 Dify 和 Moonshot API 构建你的 AI 工作流(一):让不 AI 的应用 AI 化
有了之前的文章铺垫,这篇文章开始,我们聊聊如何折腾 AI 工作流,把不 AI 的应用,“AI 起来”。
soulteary
2024/04/24
6.8K0
分享WordPress显示评论者IP的归属地及运营商信息的2种方案
张戈博客之前分享过一篇《WordPress 显示访客 UA 信息:Show UserAgent 纯代码轻度汉化版》的部署教程,算是满足了 WordPress 折腾爱好者的空虚和寂寞,不过这个插件只能显
张戈
2018/03/21
1.6K0
分享WordPress显示评论者IP的归属地及运营商信息的2种方案
WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险
还是几个月前,中国博客联盟的晓风依然博主 QQ 联系我,说发现 WordPress 评论回复邮件存在一个巨大的风险:WordPress 评论回复邮件,不管是使用 SMTP 代发还是用 Sendmail
张戈
2018/03/26
2.8K0
WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险
WordPress插件实现上传图片单独存到至腾讯云COS对象存储
我们可以考虑将静态资源单独存储,比如存储到七牛云、又拍云、腾讯云COS、阿里云OSS等第三方存储中,在这篇文章中WordPress采集插件分享基于WordPress程序可以实现上传的静态资源上传之后可以单独存储到COS中,或者可以同步备份到本地和COS中,然后在网站中调用COS对象存储中的资源,提高网站打开速度。
小狐狸说事
2023/01/09
5.4K0
WordPress插件实现上传图片单独存到至腾讯云COS对象存储
BUUCTF-Web-WriteUp
知识点:代码审计,phpmyadmin任意文件包含漏洞 参考:phpmyadmin 4.8.1任意文件包含
小简
2022/12/28
1.5K0
BUUCTF-Web-WriteUp
WordPress 常量概述
我们知道 WordPress 有很多预定义的常量,我们开发的时候,如果你是 WordPress 开发者,会经常用到这些常量,为了方便 WordPress 开发者的使用,WP Engineer 把所有的 WordPress 常用的常量都罗列出来:
Denis
2023/04/15
1.1K0
⏱ 看了 web.dev 的 631 篇博客,我总结了这些内容
最近在做 web 性能优化的工作,所以想集中学习了解一下相关的专题内容。这部分内容肯定要学习一手信息,所以找先找了 https://web.dev/[1],一个 Google 官方推出的一个面向 Web 开发者的网站,里面有非常多的教程和最佳实践,非常适合有性能优化诉求的开发者去浏览和学习。
卤代烃
2022/11/08
8801
⏱ 看了 web.dev 的 631 篇博客,我总结了这些内容
【教程】handsome主题个性化备忘录
复制这段内容并添加在前面,handsome主题可以在 开发者设置 自定义输出body 尾部的HTML代码中添加。
听闻所见
2023/08/02
1.6K0
【教程】handsome主题个性化备忘录
[PHP] 2018年终总结
========================================================================== 2018年12月29日 记录:
唯一Chat
2019/09/10
2.7K0
[日常] 面试知识点总结(持续更新)
数据结构和算法: 物理结构和逻辑结构 1.逻辑结构(集合结构,线性结构,树形结构,图形结构) 2.物理结构一般是讲内存,顺序存储结构,链式存储结构 浅谈算法中,高斯算法从1加到100,循环的话是100次,高斯的方法只需要一次 1.推导大O阶:O(1) O(n) O(n^2) O(logn) 1.常数1取代时间所有加法常数 2.只保留最高项 3.去除项相乘的常数,去掉系数
唯一Chat
2019/09/10
5K0
推荐阅读
相关推荐
将WordPress文章中的外链图片自动下载到本地
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档