捉虫与寻龙:从0打造wordpress插件wp2oc fileshare (1) – 将wp存储后端做进owncloud

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

关键字: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媒体上传框新加选项卡,以下参阅了否子戈的部分代码。

// 在新媒体管理界面添加一个百度网盘的选项
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的相关文件,简单修改如下:

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的是以上几个提到的配置参数。

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

相关文章
|
存储 SQL 编解码
WordPress插件:WPJAM Basic优化设置
WPJAM Basic插件的「优化设置」凝聚了我爱水煮鱼博客多年使用WordPress的经验,涵盖功能屏蔽与增强优化两大模块。功能屏蔽部分可关闭如文章修订、Trackbacks、XML-RPC服务等冗余或潜在风险功能;增强优化则包括Google字体与Gravatar加速、防止Frame嵌入等实用设置,大幅提升网站性能与安全性,同时简化分类链接、添加图片时间戳等功能进一步优化用户体验。该插件是WordPress用户不可或缺的高效工具。
381 2
|
安全 机器人 API
【转】WordPress防垃圾评论:Akismet插件安装教程
Akismet 是 WordPress 官方推荐的反垃圾评论插件,由 Automattic 开发,全球安装量超 500 万次。它能智能识别并拦截垃圾评论与恶意链接,保护网站整洁与 SEO 排名。本文详解其安装、注册与配置步骤,助你轻松启用这一强大工具,为网站安全保驾护航。
374 5
|
12月前
|
前端开发 UED
【转】WordPress 评论解锁插件开发教程
本文介绍如何开发一款WordPress评论解锁插件,实现“评论后查看隐藏内容”功能。通过短代码封装、Cookie识别评论状态、样式加载等核心逻辑,帮助网站提升互动性与内容价值。插件支持自定义提示语和样式,兼顾用户体验与安全性,适用于资源分享、文章互动等场景。
248 0
|
前端开发 数据安全/隐私保护
“WP页面水印助手”的WordPress插件
“WP页面水印助手”的WordPress插件
311 14
|
存储 监控 安全
用户为啥跳出页面?装这个WordPress插件,直接看回放!
nicen-replay 是一款强大的用户行为监控与回放插件,可完整记录用户在网站上的操作,如点击、滚动、输入等,并以视频形式呈现,助您深度分析用户行为。支持表单填写回放(隐私脱敏)、轻量无感监控,且数据存储于本地服务器,安全合规。适用于电商、内容创作、企业官网等多种场景,帮助优化用户体验和提升转化率。
344 3
|
API 网络架构
WordPress定时发布插件
这是一款用于WordPress的定时发布插件,可将后台、REST API及草稿箱中的文章按设定时间自动发布,避免文章立即上线。支持指定或随机延迟发布,以及周期性发布草稿箱内容。插件依赖WordPress计划任务功能,确保稳定运行。附产品截图展示设置界面。
417 10
|
搜索推荐 API SEO
WordPress上 好用的自动别名插件
这款插件支持为文章、页面、标签、分类等设置个性化别名,提升网站在搜索引擎中的排名。主要功能包括:自动别名生成(随机字符串、拼音、英文翻译三种规则),兼容自定义内容类型,可重新生成别名确保一致性。通过简单配置,用户能轻松优化URL结构,提高SEO效果。产品截图展示了设置界面及不同别名类型的使用场景。
384 0
|
9月前
|
缓存 应用服务中间件 PHP
WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
本文分享三大网站提速方案:启用Memcached减少数据库压力,使用Super Static Cache生成静态页面,结合CDN实现全球加速,全面提升WordPress加载速度与用户体验。
354 1
|
网络安全 开发者
如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
348 19
|
缓存 搜索推荐 数据库
使用SiteGround搭建WordPress网站的方法
以上就是在SiteGround上搭建WordPress网站的步骤。这个过程可能需要一些时间和耐心,但只要你按照步骤操作,你就可以成功搭建自己的WordPress网站。
502 23

热门文章

最新文章