无论利基市场如何,向您的WordPress网站添加日历插件都是提高用户参与度和保留率的好方法。 创建这样的插件无需花费太多精力,因为今天有很多基于云的日历程序包可用。 Google日历是其中最受欢迎的工具,它提供了免费使用的API。
在本教程中,我将向您展示如何使用Google Calendar API快速创建一个WordPress日历插件,该插件可以显示任何可公开访问的Google日历中的事件。
先决条件
为了充分利用本教程,您需要:
- PHP 7.0.32或更高版本
- WordPress 4.4.2或更高版本
- Composer 1.8.0或更高版本
- 一个Google帐户
1.创建一个Google项目
只有在Google Cloud Platform 控制台上创建了适当配置的项目之后,才能使用Google Calendar API。 因此,登录到控制台,然后在仪表板上按创建按钮。
在接下来显示的表单中,为您的项目命名,并根据需要更改其ID,然后按“ 创建”按钮。
项目准备就绪后,打开API库,选择Google Calendar API卡,然后按“ 启用”按钮激活API。
2.创建服务帐户
与大多数其他Google API不同,Google Calendar API不允许您使用API密钥对请求进行身份验证。 相反,它需要OAuth 2.0授权令牌。
为了能够从运行WordPress的服务器上生成这样的令牌,您需要一个Google服务帐户。 因此,转到“ 凭据”部分,按“ 创建凭据”按钮,然后选择“ 服务帐户密钥”选项。
在下一个屏幕中,选择“ 新服务帐户”选项,然后输入服务帐户的名称。 在“ 角色”字段中,选择“ 角色查看器”选项。 这将使服务帐户对您所有的Google日历具有只读访问权限。
按下“ 创建”按钮后,您将收到一个包含私钥和客户端ID的JSON文件。 保存文件,因为以后需要它。
3.创建一个WordPress插件
要开始创建WordPress插件,请在WordPress安装的wp-content / plugins /目录中创建一个名为my-gcal-plugin的新目录。 您可以随意使用该目录的任何其他名称。 但是,如果您打算将来共享该插件,请确保名称是唯一的,以避免与其他插件冲突。
在目录中,创建一个名为my-gcal-plugin.php的PHP文件,然后使用文本编辑器将其打开。
为了使WordPress能够识别您的插件,此文件需要具有有效的标题注释。 至少,注释必须指定您的插件名称。 但是,我建议也包含简短描述和版本号。 因此,在文件内添加以下代码:
<?php
/**
* Plugin Name: My GCal Plugin
* Description: Displays upcoming events from public calendars
* Version: 1.0.0
*/
如果您现在保存文件并打开WordPress管理面板的“ 插件”屏幕,则应该可以在其中看到新插件。 在继续之前,单击其下方的“ 激活”链接。
4.创建一个小部件
为了能够在WordPress站点中显示插件的输出,您需要一个自定义小部件。 因此,在PHP文件中,创建一个扩展WP_Widget
类的新类。 您可以将其My_GCal_Widget
。
class My_GCal_Widget extends WP_Widget {
}
使用其父类的构造函数,您可以指定小部件的名称和应使用CSS类,并可以选择对其进行描述。
public function __construct() {
parent::__construct('my_gcal_widget', 'My GCal Widget',
array(
'classname' => 'my_gcal_widget',
'description' => 'Shows events from a calendar'
)
);
}
通过覆盖widget()
方法,您可以指定小部件显示的内容。 暂时将此方法留空。
public function widget($args, $instance) {
// More code here later
}
最后,不要忘记通过调用register_widget()
函数来注册小部件。 这样做的最佳位置是在widgets_init
钩子回调内部。 因此,在PHP文件的末尾添加以下代码:
add_action('widgets_init', function(){
register_widget('My_GCal_Widget');
});
如果您保存文件并打开管理面板的“ 外观”>“小部件”屏幕,现在应该可以看到此处列出的新小部件。
将小部件拖放到“ 边栏”部分内的任何位置。 这样,当小部件准备就绪时,它将能够在博客的侧边栏中显示日历数据。
5.安装Google API客户端
现在您已经有了一个小部件,可以将内容添加到WordPress网站,是时候开始将其与Google Cloud平台集成了。 有一个适用于PHP应用程序的官方API客户端库 ,它提供了许多方便的方法,可让您与Google Calendar API进行交互。
由于该库在Packagist信息库中可用,因此安装它的最简单方法是使用composer
。
在插件目录中运行以下命令,以安装最新版本的Google API客户端:
composer require google/apiclient
该库将需要您在先前步骤中下载的JSON文件。 因此,现在将文件复制到您的插件目录。
安装库及其所有依赖项后,返回到PHP文件并通过在标题注释的正下方添加以下代码来加载它:
require __DIR__ . '/vendor/autoload.php';
6.初始化Google客户端
在尝试使用客户端之前,必须使用JSON文件对其进行配置。 首先在My_GCal_Widget
类内创建一个名为$client
的成员变量。
private $client;
在类的构造函数中,将其初始化为Google_Client
对象。 然后调用setAuthConfig()
方法并将JSON文件的位置传递给它。 以下代码向您展示了如何:
$this->client = new Google_Client();
$this->client->setAuthConfig(__DIR__ . '/MyCalendarApp.json');
此外,您必须请求特定的OAuth 2.0范围。 目前,由于我们仅对读取日历的内容感兴趣,因此请求一个readonly
作用域。
$this->client->setScopes(
"https://www.googleapis.com/auth/calendar.events.readonly"
);
7.读取日历数据
使用通用Google API客户端,您必须为Google日历服务创建专用客户端。 因此,在您的类的widget()
方法内添加以下代码。
$calendarService = new Google_Service_Calendar($this->client);
此时,您需要指定要使用的公共Google日历。 现在,让我们使用美国假期日历。 因此,创建一个变量来保存其ID。
$myCalendarID = "en.usa#holiday@group.v.calendar.google.com";
随时访问Google日历以查找其他有趣的公共日历。 您可以通过打开其设置页面来获取任何此类日历的ID。
要从您选择的日历中获取事件列表,只需调用日历服务客户端提供的listEvents()
方法即可。 该方法希望您将日历ID作为第一个参数传递。
默认情况下,该方法返回日历中存在的所有事件。 为了确保它仅返回即将发生的事件,您可以使用timeMin
选项并将当前日期传递给它,格式为RFC3339时间戳。 (可选)您可以使用maxResults
选项限制返回的结果数。
以下代码显示了如何获取四个即将发生的事件:
$events = $calendarService->events
->listEvents($myCalendarID, array(
'timeMin' => date(DATE_RFC3339),
'maxResults' => 4)
)->getItems();
每个事件都有一个摘要,该摘要不过是事件的标题,描述,开始日期和时间,结束日期和时间,位置以及其他几个有用的属性。 为简单起见,在本教程中,我们将仅处理每个事件的摘要和开始日期。
您从widget()
方法回显的任何内容都将由该widget()
自动呈现。 因此,您现在要做的就是为每个事件回显两个属性。 以下代码向您展示:
foreach ($events as $e) {
echo
"<p>" .
$e->start->date .
"<br/>" .
$e->getSummary() .
"</p>";
}
如果您现在刷新WordPress博客,则应该能够在侧边栏中查看日历中的事件。
结论
现在,您知道如何使用Google Calendar API为WordPress创建日历插件。 随时使用该插件与用户共享您的业务或个人日程安排,通知他们即将推出的优惠和折扣,甚至吸引他们参加您组织的本地聚会。
要了解有关Google Calendar API的更多信息,请参阅官方文档 。
翻译自: https://code.tutsplus.com/tutorials/how-to-create-a-google-calendar-plugin-for-wordpress--cms-32710