php查询信息 wordpress插件,请求PHP大神协助修改一个WordPress插件
[PHP] 纯文本查看 复制代码<?php
/*
Plugin Name: 腾讯云COS同步插件
Plugin URI: [url]http://www.slmwp.com/cos-sync-plugins[/url]
Description: 使用腾讯云对象存储服务 COS 作为附件存储空间。(This is a plugin that uses QCloud Cloud Object Service for attachments remote saving.)
Version: 2.0
Author: 水冷眸
Author URI: [url]http://www.slmwp.com[/url]
License: MIT
*/
require_once('sdk/include.php');
use Qcloudcos\Auth;
use Qcloudcos\Cosapi;
if (!defined('WP_PLUGIN_URL'))
define('WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins');// plugin url
define('COS_BASENAME', plugin_basename(__FILE__));
define('COS_BASEFOLDER', plugin_basename(dirname(__FILE__)));
// 初始化选项
register_activation_hook(__FILE__, 'cos_set_options');
// 初始化选项
function cos_set_options(){
$options = array(
'bucket' => "",
'regional' => 'gz',
'app_id' => "",
'secret_id' => "",
'secret_key' => "",
'nothumb' => "false", // 是否上传所旅途
'nolocalsaving' => "false", // 是否保留本地备份
'upload_url_path' => "", // URL前缀
);
add_option('cos_options', $options, '', 'yes');
}
// 设置COS所在的区域:
$cos_opt = get_option('cos_options', TRUE);
$regional = esc_attr($cos_opt['regional']);
Cosapi::setRegion($regional);
/**
* 上传函数
* @param $object
* @param $file
* @param $opt
* [url=home.php?mod=space&uid=155549]@Return[/url] bool
*/
function _file_upload($object, $file, $opt = array()){
//如果文件不存在,直接返回FALSE
if (!@file_exists($file))
return FALSE;
//获取WP配置信息
$cos_options = get_option('cos_options', TRUE);
$cos_bucket = esc_attr($cos_options['bucket']);
if (@file_exists($file)) {
$dirname = dirname($object);
_create_folder($cos_bucket, $dirname);
$ret = Cosapi::upload($cos_bucket, $file, $object);
} else {
return FALSE;
}
/*
echo $object.'
';
echo $file.'
';
echo $dirname.'
';
*/
}
/**
* 创建相应的目录
* @param $cos_bucket
* @param $dir
*/
function _create_folder($cos_bucket, $dir){
$data = Cosapi::statFolder($cos_bucket, $dir . '/');
if ($data['code'] == -166) {
$dir_array = explode('/', $dir);
$dir_name = '';
foreach ($dir_array as $dir) {
$dir_name .= ($dir . '/');
$result = Cosapi::statFolder($cos_bucket, $dir_name);
if ($result['code'] == -166) {
$ret = Cosapi::createFolder($cos_bucket, $dir_name);
}
}
}
//var_dump($data,$result,$ret);
}
/**
* 是否需要删除本地文件
* @return bool
*/
function _is_delete_local_file(){
$cos_options = get_option('cos_options', TRUE);
return (esc_attr($cos_options['nolocalsaving']) == 'true');
}
/**
* 删除本地文件
* @param $file 本地文件路径
* @return bool
*/
function _delete_local_file($file){
try {
//文件不存在
if (!@file_exists($file))
return TRUE;
//删除文件
if (!@unlink($file))
return FALSE;
return TRUE;
} catch (Exception $ex) {
return FALSE;
}
}
/**
* 上传附件(包括图片的原图)
* @param $metadata
* @return array()
*/
function upload_attachments($metadata){
$wp_uploads = wp_upload_dir();
//生成object在OSS中的存储路径
if (get_option('upload_path') == '.') {
//如果含有“./”则去除之
$metadata['file'] = str_replace("./", '', $metadata['file']);
}
$object = str_replace("\\", '/', $metadata['file']);
$object = str_replace(get_home_path(), '', $object);
//在本地的存储路径
$file = get_home_path() . $object; //向上兼容,较早的WordPress版本上$metadata['file']存放的是相对路径
//设置可选参数
$opt = array('Content-Type' => $metadata['type']);
//执行上传操作
_file_upload('/' . $object, $file, $opt);
//如果不在本地保存,则删除本地文件
if (_is_delete_local_file()) {
_delete_local_file($file);
}
return $metadata;
}
//避免上传插件/主题时出现同步到COS的情况
if (substr_count($_SERVER['REQUEST_URI'], '/update.php') <= 0)
add_filter('wp_handle_upload', 'upload_attachments', 50);
/**
* 上传图片的缩略图
*/
function upload_thumbs($metadata){
//上传所有缩略图
if (isset($metadata['sizes']) && count($metadata['sizes']) > 0) {
//获取COS插件的配置信息
$cos_options = get_option('cos_options', TRUE);
//是否需要上传缩略图
$nothumb = (esc_attr($cos_options['nothumb']) == 'true');
//是否需要删除本地文件
$is_delete_local_file = (esc_attr($cos_options['nolocalsaving']) == 'true');
//如果禁止上传缩略图,就不用继续执行了
if ($nothumb) {
return $metadata;
}
//获取上传路径
$wp_uploads = wp_upload_dir();
$basedir = $wp_uploads['basedir'];
$file_dir = $metadata['file'];
//得到本地文件夹和远端文件夹
$file_path = $basedir . '/' . dirname($file_dir) . '/';
if (get_option('upload_path') == '.') {
$file_path = str_replace("\\", '/', $file_path);
$file_path = str_replace(get_home_path() . "./", '', $file_path);
} else {
$file_path = str_replace("\\", '/', $file_path);
}
$object_path = str_replace(get_home_path(), '', $file_path);
//there may be duplicated filenames,so ....
foreach ($metadata['sizes'] as $val) {
//生成object在COS中的存储路径
$object = '/' . $object_path . $val['file'];
//生成本地存储路径
$file = $file_path . $val['file'];
//设置可选参数
$opt = array('Content-Type' => $val['mime-type']);
//执行上传操作
_file_upload($object, $file, $opt);
//如果不在本地保存,则删除
if ($is_delete_local_file)
_delete_local_file($file);
}
}
return $metadata;
}
//避免上传插件/主题时出现同步到COS的情况
if (substr_count($_SERVER['REQUEST_URI'], '/update.php') <= 0)
add_filter('wp_generate_attachment_metadata', 'upload_thumbs', 100);
/**
* 删除远程服务器上的单个文件
*/
function delete_remote_file($file){
//获取WP配置信息
$cos_options = get_option('cos_options', TRUE);
$cos_bucket = esc_attr($cos_options['bucket']);
//得到远程路径
$file = str_replace("\\", '/', $file);
$del_file_path = str_replace(get_home_path(), '/', $file);
try {
//删除文件
Cosapi::delFile($cos_bucket, $del_file_path);
} catch (Exception $ex) {
}
return $file;
}
add_action('wp_delete_file', 'delete_remote_file', 100);
// 当upload_path为根目录时,需要移除URL中出现的“绝对路径”
function modefiy_img_url($url, $post_id){
$home_path = str_replace(array('/', '\\'), array('', ''), get_home_path());
$url = str_replace($home_path, '', $url);
return $url;
}
if (get_option('upload_path') == '.') {
add_filter('wp_get_attachment_url', 'modefiy_img_url', 30, 2);
}
function read_dir_queue($dir){
if (isset($dir)){
$files=array();
$queue=array($dir);
while($data=each($queue)){
$path=$data['value'];
if(is_dir($path) && $handle=opendir($path)){
while($file=readdir($handle)){
if($file=='.'||$file=='..') continue;
$files[] = $real_path = $path.'/'.$file;
if (is_dir($real_path)) $queue[] = $real_path;
//echo explode(get_option('upload_path'),$path)[1];
}
}
closedir($handle);
}
$i='';
foreach ($files as $v){
$i++;
if (!is_dir($v)){
$dd[$i]['j'] = $v;
$dd[$i]['x'] = '/'.get_option('upload_path').explode(get_option('upload_path'),$v)[1];
}
}
}else{
$dd = '';
}
return $dd;
}
// 在插件列表页添加设置按钮
function cos_plugin_action_links($links, $file){
if ($file == plugin_basename(dirname(__FILE__) . '/cos-sync.php')) {
$links[] = '' . 设置 . '';
}
return $links;
}
add_filter('plugin_action_links', 'cos_plugin_action_links', 10, 2);
// 在导航栏“设置”中添加条目
function cos_add_setting_page(){
add_options_page('腾讯云COS设置', '腾讯云COS设置', 'manage_options', __FILE__, 'cos_setting_page');
}
add_action('admin_menu', 'cos_add_setting_page');
// 插件设置页面
function cos_setting_page(){
if (!current_user_can('manage_options')) {
wp_die('Insufficient privileges!');
}
$options = array();
if (!empty($_POST) and $_POST['type'] == 'cos_set') {
$options['bucket'] = (isset($_POST['bucket'])) ? trim(stripslashes($_POST['bucket'])) : '';
$options['regional'] = (isset($_POST['regional'])) ? trim(stripslashes($_POST['regional'])) : '';
$options['app_id'] = (isset($_POST['app_id'])) ? trim(stripslashes($_POST['app_id'])) : '';
$options['secret_id'] = (isset($_POST['secret_id'])) ? trim(stripslashes($_POST['secret_id'])) : '';
$options['secret_key'] = (isset($_POST['secret_key'])) ? trim(stripslashes($_POST['secret_key'])) : '';
$options['nothumb'] = (isset($_POST['nothumb'])) ? 'true' : 'false';
$options['nolocalsaving'] = (isset($_POST['nolocalsaving'])) ? 'true' : 'false';
//仅用于插件卸载时比较使用
$options['upload_url_path'] = (isset($_POST['upload_url_path'])) ? trim(stripslashes($_POST['upload_url_path'])) : '';
}
if(!empty($_POST) and $_POST['type'] == 'cos_sync_all'){
$cos_options = get_option('cos_options', TRUE);
$cos_bucket = esc_attr($cos_options['bucket']);
$synv = read_dir_queue(get_home_path().get_option('upload_path'));
$i = 0;
foreach ($synv as $k){
$ret = Cosapi::stat($cos_bucket, $k['x']);
if ($ret['code']!=0){
$i++;
_file_upload($k['x'], $k['j']);
}
}
echo '
本次操作成功同步'.$i.'个文件
';
}
// 若$options不为空数组,则更新数据
if ($options !== array()) {
//更新数据库
update_option('cos_options', $options);
$upload_path = trim(trim(stripslashes($_POST['upload_path'])), '/');
$upload_path = ($upload_path == '') ? ('wp-content/uploads') : ($upload_path);
update_option('upload_path', $upload_path);
$upload_url_path = trim(trim(stripslashes($_POST['upload_url_path'])), '/');
update_option('upload_url_path', $upload_url_path);
?>
设置已保存!
}
$cos_options = get_option('cos_options', TRUE);
$upload_path = get_option('upload_path');
$upload_url_path = get_option('upload_url_path');
$cos_bucket = esc_attr($cos_options['bucket']);
$cos_regional = esc_attr($cos_options['regional']);
$cos_app_id = esc_attr($cos_options['app_id']);
$cos_secret_id = esc_attr($cos_options['secret_id']);
$cos_secret_key = esc_attr($cos_options['secret_key']);
$cos_nothumb = esc_attr($cos_options['nothumb']);
$cos_nothumb = ($cos_nothumb == 'true');
$cos_nolocalsaving = esc_attr($cos_options['nolocalsaving']);
$cos_nolocalsaving = ($cos_nolocalsaving == 'true');
?>
腾讯云 COS 附件设置
Bucket 设置 |
placeholder="BUCKET"/> 请先访问 腾讯云控制台 创建
|
---|---|
Bucket 地域 |
>华南 >华中 >华北 请选择您创建的 |
APP ID 设置 |
placeholder="APP ID"/> 请先访问 腾讯云控制台 点击 |
secretID |
|
secretKey |
|
不上传缩略图 |
/> 建议不勾选 |
不在本地保留备份 |
name="nolocalsaving" <?php if ($cos_nolocalsaving) echo 'checked="TRUE"'; ?> /> 建议不勾选 |
本地文件夹: |
placeholder="请输入上传文件夹"/> 附件在服务器上的存储位置,例如: |
URL前缀: |
placeholder="请输入URL前缀"/> 注意: 1)URL前缀的格式为 ,“本地文件夹”务必与上面保持一致(结尾无 2)cos中的存放路径(即“文件夹”)与上述 3)如果需要使用 |
更新选项 |
同步历史附件 |
注意:如果是首次同步,执行时间将会十分十分长(根据你的历史附件数量),有可能会因执行时间过长,页面显示超时或者报错。 所以,建议那些几千上万附件的大神们,考虑官方的 同步工具 |
---|
}
?>
php查询信息 wordpress插件,请求PHP大神协助修改一个WordPress插件相关推荐
- cad图层管理插件_设计大神CAD常用七个插件你会用几个?
如果你需要这些CAD插件,可以私信我,小编会及时发给大家 说道CAD插件可能会被人们熟知的也就那几个,可是据统计CAD插件多达上百个,那么在这上百个插件中你又会用几个呢?下面就让我们看看大部分设 ...
- thinkcell插件_PPT大神私藏的5款插件,用好它们,小白也能快速做出精美的PPT
职场办公,PPT是一项必备的技能,相信很多人都想快速做出精美的PPT.其实啊,想要快速做出精美的PPT并不难,今天小编就来和大家分享PPT大神私藏的5款插件,相信大家用好它们,也能快速做出精致.漂亮的 ...
- 请求各位大神 只有微信头像和昵称怎么查到微信号
有个很中意的姑娘 请求各位大神 只有微信头像和昵称怎么查到微信号
- 插件制作教程 php,typecho插件编写教程(二):写一个新插件
第一节我们了解了一个插件的基本构成,下面我们需要一个实例练习巩固. 真赶巧,老高最近正在改版百度sitemap提交插件for typecho,下面和老高一起改版吧! 准备 不知道大家用过WP版的百度结 ...
- 淘宝新品补单平台怎么样才能为你的产品精准打标?大神导航,一个神奇的网站,从此开启大神之路!
不看你一定会后悔! 大神导航,一个神奇的网站,从此开启大神之路! 轻松导航,不仅有最新资讯,还有最近使用记录.常用推荐,方便用户使用!图标精美,良心精美.简易搜索,功能齐全,免费高质量素材任意挑选! ...
- 淘宝详情页排版布局怎么做?大神导航,一个神奇的网站,从此开启大神之路!
不看你一定会后悔! 大神导航,一个神奇的网站,从此开启大神之路! 轻松导航,不仅有最新资讯,还有最近使用记录.常用推荐,方便用户使用!图标精美,良心精美.简易搜索,功能齐全,免费高质量素材任意挑选! ...
- 淘宝标题核心关键词怎么做?大神导航,一个神奇的网站,从此开启大神之路!
[网站推荐] 不看你一定会后悔! 大神导航,一个神奇的网站,从此开启大神之路! 轻松导航,不仅有最新资讯,还有最近使用记录.常用推荐,方便用户使用!图标精美,良心精美.简易搜索,功能齐全,免费高质量素 ...
- 淘宝补单可以补金币数据吗?大神导航,一个神奇的网站,从此开启大神之路!
不看你一定会后悔! 大神导航,一个神奇的网站,从此开启大神之路! 轻松导航,不仅有最新资讯,还有最近使用记录.常用推荐,方便用户使用!图标精美,良心精美.简易搜索,功能齐全,免费高质量素材任意挑选! ...
- 淘宝人群拖价怎么做? 大神导航,一个神奇的网站,从此开启大神之路!
不看你一定会后悔! 大神导航,一个神奇的网站,从此开启大神之路! 轻松导航,不仅有最新资讯,还有最近使用记录.常用推荐,方便用户使用!图标精美,良心精美.简易搜索,功能齐全,免费高质量素材任意挑选! ...
最新文章
- gsoap 学习 1-由wsdl文件生成h头文件
- 破除SCI至上!评价 AI 科研成果,需要新思路【附报告下载】
- 决策树学习算法 - ID3算法
- Dubbo下载-从missing artifactId说起
- HTML5事件——contextmenu 隐藏鼠标右键菜单
- 团队的英文翻译缩写_魔兽世界各种英文/拼音/缩写的翻译/解释
- 树与森林的概念与性质
- fedora 安装google浏览器失败,报错
- ajax清除session,跳出iframe框架页面后跳转页面
- php经纬度测距,PHP根据经纬度坐标计算距离
- 56、弱电工程交换机的三种vlan划分方法详解,划分vlan变得如此简单。
- spoj4487(splay)
- linux调时区北京,Linux修改系统时间和中国时区
- PM2部署React项目(Ubuntu服务器)
- 【Python入门】:字典与集合
- c语言printf函数中的格式控制字符串,C++_C语言格式化输入输出函数详解,一:格式输出函数printf()
1 - phpStudy...
- 【健身】程序员也应该知道的胸背体态矫正锻炼技巧(中)
- 5.JavaSwing知识点----(1)swing中的容器
- 2021-10-30
- Oracle中TO_DATE TO_CHAR格式
热门文章
- noip2005 过河 (数论+动态规划)
- java 一个父类派生两个子类_面向对象 - 1.继承/2.派生/3.继承的实现原理
- 修改jenkins工作目录
- js中数组去重的方法
- net use 访问远程主机
- 《安富莱嵌入式周报》第282期:CMSIS-DSP手册引入计算图,树莓派单片机RP2040超频到1GHz,COBS字节编码算法,纯手工为PS1打造全新亚克力外壳
- KDD2021 | 左右互搏:基于协同对比学习的自监督异质图神经网络
- 机器学习项目实战—吸烟与人体疾病关系预测
- 全部翻译作品 (及时更新)
- Netscreen 防火墙透明模式配置案例