前言
在上一篇文章 给 YOURLS 短网址系统编写插件《Hello World!》 中,用了一个简单的例子介绍了如何给 YOURLS 编写插件,让我们对 YOURLS 插件的实现步骤有了一些了解。
YOURLS 自带的功能一次只能生成一个短网址,如果想要一次让多个 url 生成多个短网址,那么就需要《批量生成短网址》这个插件了。
编写插件
在这个插件中需要一个参数:
接收到 urls 后,先使用 explode
函数将 urls 字符串分割为 url 数组,然后遍历 url 数组,对数组中的值进行编码过滤,再调用系统方法生成短网址,最后将结果返回。
完整代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| <?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; }
|
使用插件
请求地址:
1
| http://域名或ip地址/yourls-api.php?username=你的登录账户&password=你的登录密码&action=batch_generation&urls=https://baidu.com,https://youku.com,https://csdn.com
|
结果:
1 2 3 4 5 6 7 8 9 10 11 12 13
| [{ "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篇文章,最后一篇拖延了十多天,拖延症发作,一边感叹着时间过得真快,感觉自己就是一条咸鱼,一边看着这几篇文章,感觉又好像做了些什么,留下了一点东西。
这大概就是写博客的原因吧。
Github:https://github.com/her-cat/batch-generation-shorturl