前言

在 上一篇文章 给 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