前言
在上一篇文章 给 YOURLS 短网址系统编写插件《Hello World!》 中,用了一个简单的例子介绍了如何给 YOURLS 编写插件,让我们对 YOURLS 插件的实现步骤有了一些了解。
YOURLS 自带的功能一次只能生成一个短网址,如果想要一次让多个 url 生成多个短网址,那么就需要《批量生成短网址》这个插件了。
编写插件
在这个插件中需要一个参数:
urls
以英文的逗号分割的 url 字符串, 例如 https://baidu.com,https://youku.com,https://csdn.com
接收到 urls 后,先使用 explode
函数将 urls 字符串分割为 url 数组,然后遍历 url 数组,对数组中的值进行编码过滤,再调用系统方法生成短网址,最后将结果返回。
完整代码:
<?php
/*
Plugin Name: Batch generation shorturl
Plugin URI: https://github.com/her-cat/batch-generation-shorturl
Description: Batch generation of short URLs
Version: 1.0
Author: 她和她的猫
Author URI: https://github.com/her-cat
*/
// 注册插件
yourls_add_filter( 'api_action_batch_generation', 'batch_generation_shorturl' );
// 插件核心内容
function batch_generation_shorturl() {
// 判断是否传入参数 urls
if( !isset( $_REQUEST['urls'] ) ) {
return array(
'statusCode' => 400,
'simple' => "Need a 'urls' parameter",
'message' => 'error: missing param',
);
}
$urls = $_REQUEST['urls'];
// 将 urls 以 , 分割为 url 数组
$url_arr = explode( ',', $urls );
// 存放结果集
$result = array();
// 遍历 url 数组
foreach ( $url_arr as $url ) {
// 对 url 进行编码过滤
$url = yourls_encodeURI( $url );
$url = yourls_escape( yourls_sanitize_url( $url ) );
// 生成短网址
$return = yourls_add_new_link( $url );
// 判断是否生成功
if (isset($return['statusCode']) && $return['statusCode'] == 200 ) {
// 加入结果集中
$result[] = [
'raw_url' => $url, // 原 url
'keyword' => $return['url']['keyword'], // 短网址关键词
'shorturl' => $return['shorturl'], // 生成的短网址
];
}
}
// 输出 json 格式结果
echo json_encode($result);exit;
}
使用插件
请求地址:
http://域名或ip地址/yourls-api.php?username=你的登录账户&password=你的登录密码&action=batch_generation&urls=https://baidu.com,https://youku.com,https://csdn.com
结果:
[{
"raw_url": "https://baidu.com",
"keyword": "1",
"shorturl": "http://yourls.com/1"
}, {
"raw_url": "https://youku.com",
"keyword": "2",
"shorturl": "http://yourls.com/2"
}, {
"raw_url": "https://csdn.com",
"keyword": "3",
"shorturl": "http://yourls.com/3"
}]
总结
最重要的是要知道 YOURLS 自带的函数有哪些,以及它们的用法,最后将他们组合起来。
这篇文章没有将如何安装、启用插件,不了解的可以参考上一篇文章。
最后,不知不觉七月份就过去了,这一个月断断续续的写了5篇文章,最后一篇拖延了十多天,拖延症发作,一边感叹着时间过得真快,感觉自己就是一条咸鱼,一边看着这几篇文章,感觉又好像做了些什么,留下了一点东西。
这大概就是写博客的原因吧。