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

Docker+WordPress+NextCloud 要安装Docker-CE,必须是CentOS7.X并且确认是64位版本 我的环境:CentOS7.5 64位系统最小化安装,禁用Selinux 更新CentOS系统: #yum install -y bash-completion; #yum update; #reboot 安装最新版Docker 最小化安装没有旧版本的docker,若有,就要事先卸载: #yum remove docker d... 阅读详情

关键字: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支持选择媒体等部分了。这样插件就基本完成了,留到以后做。。



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

后端开发 Docker4.99.0 AppleSilicon 苹果芯片 Mac 安装包 本资源为 Docker Desktop 4.99.0 苹果芯片(Apple Silicon)专用安装包,原生适配 M 系列 Mac,可快速搭建本地容器开发环境,支持镜像拉取、容器编排、项目打包部署。适合后端开发、运维、全栈开发者,用于本地微服务、测试环境、项目容器化开发。 立即下载

相关推荐

linux redis7 完整的集群搭建过程

一。安装: 1.1 说明: Redis官方只提供了源码,并没有提供经过编译之后的安装包。 因此,安装Redis,要先编译、后安装。(即源码安装方式) 注意:需要联网安装 1.2 安装编译的工具: yum install gcc gcc-c++ -y 1.3 下载tar包,上传到linux服务器,解压配置环境变量 1.4 cd +解压的目录下:编译 make 注意:如果编译失败,请重新进行解压编译,...

m0_38028438的博客 719

WordPress网站利用WP2PCS-SY插件定时、增量网站备份至百度网盘

WordPress网站利用WP2PCS-SY插件定时、增量网站备份至百度网盘  如果我们有做过网站,如果我们做过网站丢过数据,那肯定体会到网站数据是多么重要。如果我们够勤奋,可以定期手工备份数据到本地;如果我们技术够可以,可以同步定时,以及增量备份到其他服务器;如果我们想到才去备份,想不到就不备份,甚至选择的主机商还要追求便宜,那这些朋友离丢数据也不远。 如果我们使用的WordPres

IT小智博客 3024

HRNet 【demo 复现过程】

Deep High-Resolution Representation Learning for Human Pose Estimation

qq_45257495的博客 5556

下载赚钱利器之千脑网盘WordPress插件

在去年九月,博客联盟介绍了一个利用网盘赚钱的方法,推荐的是台湾的xun6。今天要推荐的是另外一个利用下载赚钱的好东西——千脑网盘WordPress插件。注意:仅仅是推荐该插件。 对于单个作者的WordPress下载博客来说,始终推荐xun6,因为最近xun6增加了不少服务器,下载速度有了很大的提升。但对于开放注册,并且允许甚至邀请网友来发布书籍的WordPress下载博客来说,利用千脑网盘的Wo...

weixin_30530939的博客 411

别再傻傻分不清!5分钟搞懂倾斜摄影里‘地面分辨率’和‘模型精度’到底啥关系

本文深入解析倾斜摄影中‘地面分辨率’与‘模型精度’的关系,帮助读者快速理解两者的本质区别与内在关联。通过实战案例和公式计算,详细说明如何从航飞设计到精度验证全流程控制,避免常见认知误区,并针对不同应用场景提供精度需求建议。

weixin_33700350的博客 477

利用gprMax与Matlab实现SFCW雷达信号的高效仿真与优化

本文详细介绍了如何结合gprMax与Matlab实现SFCW雷达信号的高效仿真与优化。通过利用gprMax获取地下场景的冲激响应,并在Matlab中运用卷积与信号处理技术,可大幅提升SFCW雷达系统仿真的效率与灵活性,为探地雷达研究与设计提供强大工具。

book8的博客 706

owncloud常见问题解决方案

PHP 似乎没有设置好查询的系统环境变量。 用 getenv(\"PATH\") 测试只返回一个空值。 解决方案:在 php-fpm 的配置文件中,将语句前面的引号注释掉,即刻解决 ;env[HOSTNAME] = $HOSTNAME ;env[PATH] = /usr/local/bin:/usr/bin:/bin ;env[TMP] = /tmp ;env[TMPDIR] = /tm...

葫芦娃的爷爷的博客 8471

2025届程序技术类笔试题

希尔排序在直接插入排序的基础上进行了改进,它通过比较相距一定间隔的元素来进行,各轮比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一轮排序为止。某人逆着水流的方向向岸边划船,每次行进前进x米后需要休息一下,休息期间船会自行倒退y米,每次休息后再次行进,前进距离缩短1/5,若起始距离岸边为m米,问:能否到达岸上,需要行进多少次才能上岸。直接插入排序的原理是将第i个元素插入前面i-1个已排好序的记录中,将比第i个元素大的记录依次向后移动一个位置,将第i个元素插入空位。第二轮相邻比较,后移2次。

博客 594

利用citrix xenapp and xendesktop建立你的云桌面

本文关键字:云办公。真正可用的个人云桌面,云下载云播放。GPO dns,xendeskop storeweb无法完成您的请求 其实云电脑桌面,虚拟桌面vdi,瘦客户端这样的东西出现很久了,只是它们从来没有像今天的疫情时代一样让人对他们更为关注。一般来说谈到云电脑人们都会想到最初的vps,正如谈到云桌面这个人们会想到远程桌面这个工具层面的东西一样,但其实云桌面与办公,可以是内涵和外延很广的东西,比如虚拟化这些东西结合起来,造就了一些专门做vdi的公司,如vmware,pd,citrix,(citrix很早就提

minlearn's techrepos 1289

安卓15_ROM修改定制化_____修改rom的前提条件 去除各种验证 安卓设备通用

通过博文了解💝💝💝 1-------💝💝💝了解安卓设备的启动流程与核心验证机制 2-------💝💝💝了解安卓设备修改rom中的各种验证机制以及对应的去除方法 3-------💝💝💝了解avb验证与dm验证的本质区别与对应的操作方式 4-------💝💝💝修改rom前的循序步骤 避免验证机制导致的不开机

小马哥的专栏 506

YOLOv12改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

1️⃣ 什么!不知道如何改进模型⁉️ 本专栏所使用并改进的每一个模块均包含详细的模块分析、原理讲解、个人总结、多种改进方式以及完整的修改流程,所有改进100%可直接运行,性价比极高。2️⃣ 找不到合适的模块⁉️ 所有改进点均为近三年顶会,顶刊提出的先进算法,将其融入到中,并进行二次创新,新颖度高,创新度高,能够适应不同的任务场景。3️⃣ 不确定自己改进的步骤、结果是否正确⁉️ 订阅专栏即可进群享受模型训练、模型改进、论文写作、投稿选刊,从入门到论文的各种答疑内容,非常适合新手。4️⃣ 团队内发表数篇SCI论

Limiiiing的博客 2万+

mineportal2:基于mailinbox,一个基本功能完备的整合个人件

本文关键字:mailserver backed new mineportal,邮箱附件外链,owncloud backend static web hosting,阿里云省事建站,如何借助mineportal低成本把虚拟空间+email玩成个人portal,one place webapps for personal use 在《发布erpcmsone》一文中我曾谈到我缺少一种能发现我需求的网站程序 — 能把我日常要用的东西整合到one place且生态统一易扩展的东西,我以为odoo是这样的产品,但现在看

minlearn's techrepos 965

AgentScope 2.0 扩展开发完全指南:从中间件到模型适配器的深度实践

本文系统讲解 AgentScope 2.0 框架的五大扩展机制,涵盖中间件系统的洋葱模型与钩子设计、ChatModelBase 基类与多供应商适配器开发、工作空间(本地/Docker/E2B)的抽象接口与生命周期管理、凭据工厂与 MCP 协议集成、以及工具协议与存储后端扩展。文中提供完整的架构图、代码示例与故障排查指南,帮助开发者快速掌握 AgentScope 的插件化扩展体系。

program哲学 295

玩nas和虚拟化,怎能少得了zfs和整机热备

我们知道,玩家庭nas和云虚拟机,是最考验方案的数据防丢能力的。事实上就是做个站,我们也经常碰到导入导出/备份/迁移,这种运维问题。个人通常都做不到很经济实用的备份方案,更不用说整那种类似云计算iaas的异地备份了。大凡涉及到此类技术的,除了工具级别的同步器这种东西,就是那种内置在os的文件系统支持了。事实上,搞几块硬盘弄个raid体验非常糟糕,费电买盘提成本不说,lvm,mdadm,btrfs,的软raid可靠性几乎是儿戏。

minlearn's techrepos 904

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

在群晖docker上装elmlang可视调试编码器ellie

本文关键字:elmlang live editor,docker要注意的地方。 在前面发布《elmlang时》我们谈到elmlang的函数FRP和可视调试特征,使得为其装配一个live ide变得可能,elmlang提供的插件,已经使其它能很轻松地接入市面上几大IDE,如本地我们有atom,vscode这样的东西,在业界是推崇用vim的,他命令区和编辑区合一的ui方案使之成为通用ide,那么在远程呢,越来越流行的还有很多web IDE,elmlang for webapp的特性使得其天然就与web ide相

minlearn's techrepos 606

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

在云主机上安装vscodeonline

在前面《云主机上部署pai》,《云主机上部署openfaas》中,我们用同样风格的脚本写出了在云主机上部署的二个paas面板,pai类似虚拟主机管理器,而openfaas是paas->faas,综合这二者都是部署和devops面板,它们在透出的界面5523,8080处用web操作。然后我们在《戒掉PC,免pc开发,cloud ide and debug设想》又遇到了vscodeonline,这三者都是云主机构造paas APP以“在线开发和部署”的OS扩展,体验良好度又都十分接近,因此,我们这次

minlearn's techrepos 568

让owncloud成为微博式记事本

本文关键字:利用owncloud做网上记事本 相信不少人有把QQ空间之类的社交类,微博类程序当网上记事本用的经历,谈到记事本程序,有微博这种(加密或不公开),有mail based note俗称电子邮件便笈,也有利用emlog之类的自建碎语的,当然wordpress+插件或p2p wordpress theme也可以,还有人用wordpress页面+评论打造,当然,直接txt文档或excel表格也可以,单个mediawiki页面也可以(它支持页面内多条记事的归档,即一个页面一个归档),所以说,网上记事这种需

minlearn's techrepos 557

在tinycolinux上编译jupyter和rootcling组建混合cpp,python学习环境

本文关键字:升级/枚举tinycorelinux上的gcc,在tinycorelinux上安装python jupyter 在前面《tinycolinux上编译odoo》中我们谈到python在流行的“one host one guest”学习语言选型组合中是对应于cpp的,还谈到一些混合语言工具,如terralang,rootcling等,见《发布qtcling》和《发布terracling》,技术界二二相对的事物总有惊人的对应:cpp,py组合的cling就相当于lua,c组合的terralang: 事

minlearn's techrepos 545

让owncloud hosting static web site

本文关键字:在owncloud存储中做站,owncloud static website hosting, hosting website in owncloud,owncloud www service,mailinabox static website hosting强化,netdisk netstorage based blog system,netdisk based static website hosting and syncing 在发布《mineportal》时我们谈到不使用静态网站的理由:

minlearn's techrepos 539

戒掉PC,免pc开发,cloud ide and debug设想

本文关键字:分布式IDE,cloudide,远程编码,远程调试,jupyter with visual debugger support 编程界有关于语言的圣战,OS之争,也甚至有代码编辑器是选择cui text ide还是gui IDE的选择的讨论。这次我们讲的是云IDE,其实,我们一直讲的是devops和云可视IDE这类服务端直接支持的开发部署,从《ellie可视化》到《docker as snippter空间》,从《一种设想:在网盘里coding,debuging,运行linux rootfs作全面

minlearn's techrepos 521

在tinycolinux上编译odoo8

本文关键字:在tinycolinux上源码安装odoo8,动态模式python+uswgi+nginx,精简安装odoo8模块 在前面《发布基于openerp的erpcmsone》时,我们谈到openerp其实是一种后端erp前端CMS的东西,其网站模块部分是通用cms网站选型的技术楷模,有可视化拖拉建站支持,且可集成后端erp部分(在线聊天啊,联系表单,购物车模块,etc…),当然,谈到cms,不是说它就是前端,它反而正是属于odoo后端支持部分的,只不过其展示部分是前端技术: 什么是CMS呢?所谓CMS

minlearn's techrepos 496

在dbcolinux上安装cozy-light

本文关键字:js个人云存储,cozy,node-legcay和谐模式 在前面的《appstacks》,《apps》系列文章中,我们大力涉及到带存储支持的云程序,与语言选型放一起,我们写了py的2个(seafile,odoo),php的2个(owncloud,mongopress),js的一个davros。并一直扩展它们的意义,认为它是一种小可视为与common storage based webapp合作(ocwp ownnote,mongpress,odoo),大可扩展为paas,webos的东西(san

minlearn's techrepos 433

把群晖mineportalbox当mydockerbox和snippter空间用

本文关键字:把群晖当真正产品级的mydockerbox用,利用docker hook dir as volume在群晖上制造snippter空间 虽然在前面的《群晖docker上装ellie》和更前面一些文章中我诟病过docker aufs的诸多弊端,但不可否认的是,docker这种能虚拟user mode OS能虚拟application的机制能成为开发和部署的利器,比如结合git server webhook能构建出dockerhub这样的自动构建/发布平台(除了开发,部署,甚至于dbcolinux中我

minlearn's techrepos 383

mineportal – 一个开箱即用的wordpress+owncloud作为存储后端

本文关键字:mineportal,wordpress+owncloud,owncloud file backend for website 亲是不是在维护一个网站? 普通的网页程序如基于mysql的网站程序,导致了越来越多的问题,比如。 将什么都放在服务端。界面放在逻辑中。 维护比较困难,数据库不容易备份。 管理在远端。内容在远端。用户也在远端。脱网了完全不能参与。 这其实也是所有远程程序的特点,只是WEB这种远程程序更为特殊,它将用户端也放在远程。 解决的方法在哪?有没有像本地程序一样发布部署的网站程序呢

minlearn's techrepos 354

mineportal个人云帐号云资源利用好习惯及实现

本文关键字:mineportal,owncloud,个人云,私有云 云应用和大数据时代,我们要怎么强化我们现有的个人帐号方案? 现状: opensocical id之类的东西还没有普及使用,google wave也没有成功,gravatar也只是内部帐号,所有的帐号类的sns产品都不足于一统江湖变成帐号标准,默认情况下,人们常常借助手机号,好吧,还有一件大件,即email系统来标识身份。也许手机号和邮箱号,是二种常见的社会ID标识了。 PS:当然,那种要求上传身份证和cer id的是强实名制网站特有的。 在

minlearn's techrepos 343
上一篇: 统一的分布式数据库和文件系统mongodb,及其用于解决aliyun上做站的存储成本方案
下一篇: 让owncloud成为微博式记事本
Minlearn
博客等级 码龄18年 20粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值