前往小程序,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 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
Typecho随机文章与同分类下随机文章的实现
在制作Typecho主题时,有的时候会想弄个随机推荐文章的功能,所以我就简单弄了个函数,可以随机输出n篇文章,同时追加一些参数还可以输出当前文章分类下的随机文章,具体如下: 函数部分
泽泽社长
2023/04/17
4410
Typecho调用热门评论文章和调用最新文章的方法
Typecho程序在设计主题的时候,侧栏有些时候需要调用热评文章或者最新文章。我们可以在指定的位置通过脚本直接调用。在这篇文章中,老蒋准备整理这个调用文章的方法,以后在有需要的模板中可以直接调用使用。其实设计主题就那么回事,静态模板搞定后,就是直接调用。
老蒋
2021/12/24
9580
Typecho最新热门热评文章调用api
因为群友花花弄了个高仿掘金主题,没有实现热门与热评文章加载功能,特此为其分享点代码,先是简单弄了个json版本,后来根据需求又弄了个html的版本
泽泽社长
2023/04/17
5490
Typecho实现文章上一篇下一篇功能
在别人博客看到主题底部都带上一篇下一篇的跳转功能,注意到这一细节后才想到自己的博客主题没有带,夺笋啊这
qiangzai
2021/12/21
6630
Typecho实现文章上一篇下一篇功能
Typecho 程序调用评论数量最多的文章方法
我们在购物的时候是不是希望购买别人也在购买的商品?我们在访问别人网站的时候是不是也想看看网站中有哪些文章也是大家关注的,于是我们会在制作主题模板的时候调用最热门的文章,比如调用评论数最多的,或者是访问量最高的文章。在这篇文章中,老蒋准备整理来自Typecho主题中调用评论最多的文章。
老蒋
2021/12/24
4500
TE获取上一篇/下一篇的链接
这样的会输出同时文章的标题和链接,不是很利于加样式。 不过1.0版的typecho,已经支持更灵活的上下文输出:
泽泽社长
2023/04/17
3340
关于typecho的一些样式代码
循环页面、分类、标签 <!--循环显示页面--> <?php $this->widget('Widget_Contents_Page_List')->to($pages); ?>
用户7146828
2021/08/09
1.3K0
使用分词增强Typecho的搜索功能
本博客是使用Typecho搭建的,侧边提供了搜索功能,然而Typecho内置的搜索功能仅仅只是基于字符串的全匹配查找,功能非常鸡肋,很多合理的查询都没法得到结果,比如“Transformer的文章”、“BERT的相关内容”都没有查询结果,因为文章中都不包含这些字符串
mathor
2021/08/03
1.5K0
Typecho如何利用自定义页面,随机显示(跳转到)一篇文章
当我们的博客文章很多时,无法很直观的展示所有文章给读者,这时候我们可随机给读者显示一篇文章。 下面这个方法也是在网上找的一些教程累积的方法,不需要修改typecho源文件,只需要在主题文件夹下,新建
杨逸轩
2018/06/14
9500
Typecho 随机文章(日志)
Typecho 随机文章调用代码,使用这个代码省的用插件了。 博主作为一个有洁癖的人,做模板能不用插件就尽量不用。
微喵知识
2024/07/22
1100
Typecho 随机文章(日志)
Typecho无插件实现同分类文章上一篇下一篇
这个功能因为自己突然有需要,然后去论坛搜了下发现也有人问过,帖子里有人推荐了个插件可以实现,不过我突然想到个模板函数,就是自定义文章上下篇链接的,好像就可以直接实现,不需要插件。
泽泽社长
2023/04/17
4110
Typecho无插件实现随机文章调用方法
前几天有企业网站客户提到,他们编辑有找其他企业网站交换链接的时候对方嫌弃他们网站没有更新内容,有没有什么办法来解决这个问题。当然实际上他们网站并没有多少内容可以更新的,毕竟企业网站产品添加完毕其他哪里有多少内容。这里老蒋想到的办法就是直接侧栏调用随机文章,然后随机文章标题方便的时间用当天时间。
老蒋
2021/12/24
4810
Typecho教程 - 给主题增加一个热门文章排行榜
今天欣赏我的网站的时候总感觉侧边栏上缺了一点什么,以前的那个flash的仓鼠也不想养了,毕竟在emlog上养了三年。突然我就灵光一闪,不如加个热门文章排行榜,没事还能关心关心自己的文章到底哪个受欢迎。
用砖头敲代码
2022/08/30
4720
Typecho主题开发/二次开发常用代码功能整理备用
目前我们在使用的博客CMS程序中,可能较多的网友会使用WordPress,毕竟提供的免费主题、插件以及文档是比较多的,主要是用户量确实比较多。其次国内的免费博客CMS中,ZBLOG和Typecho是小众用户群,不能说不行,只能说用户量相对比较小。但是老蒋个人认为有用作个人博客日志的还是可以用的。
老蒋
2021/12/24
4790
模块化Typecho随机调用文章 减轻模板页面的体积
今天在帮助客户调整一个企业网站主题的时候发现他的程序是用的Typecho,但是侧栏的随机文章是使用的直接SQL代码调用的,感觉比较麻烦,于是我准备寻找一款直接定义函数的调用,这样就可以减少主题页面模板的代码体积,本身我们在使用Typecho就要考虑到轻便。
老蒋
2021/12/24
2030
Typecho 调取随机文章
10 代表随机调用 10 篇文章,可以在需要的位置调用,例如博主就在主题目录下的 footer.php 文件中加入了如下代码:
宋天伦
2020/07/16
9480
Typecho 调取随机文章
Typecho——如何查看已经提供的方法是否支持传入参数
最近在开发EasyBe主题,打算对侧边一些列表展示数量做成后台可配置的,但是有些列表使用的是typecho本身提供的一些方法,本来打算在function.php中来重写,然后想了下是不是可以看看对应的源码,一看源码才知道原来有些方法是支持传参的;
思索
2024/08/15
1520
Typecho上下篇文章代码输出文章缩略图
本篇文章虽说是教大家如何调用上下篇文章缩略图的,但是实则是探讨一种船新的函数写法。在正式教程开始之前,首先我们需要先写个缩列图函数,如下:
泽泽社长
2023/04/17
8040
Typecho访问固定链接随机跳转到某一篇文章的方法
这算是个小功能吧。访问固定链接,每次打开都会随机跳转到某一篇文章。(不是随机文章列表!) 👇🏻举个栗子👇🏻下面的链接每次打开,都是不同文章。 随机文章 创建主题模板文件 打开服务器目录至/theme
目的地-Destination
2023/03/06
5710
Typecho获取随机文章函数
需要使用时在模板中调用即可,这个随机文章函数的好处就是不光兼容mysql还兼容sqlite数据库。
泽泽社长
2023/04/17
6950
推荐阅读
相关推荐
Typecho随机文章与同分类下随机文章的实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档