在本系列的前两篇文章中,我写了什么是欢迎页面,以及它们如何通过连接点来帮助产品改善用户体验,之后写了我打算在构建欢迎页面时使用的WordPress Transients API。
为您的WordPress插件编写一个欢迎页面可能是一个棘手的过程。 整个概念围绕通过设置瞬态并将用户最终删除将用户重定向到特定页面而进行。 让我们开始构建欢迎页面。
WP欢迎页面样板
我将以可在您的WordPress产品中使用的插件的形式为WordPress构建欢迎页面样板。 该插件的最终形式托管在GitHub的WP-Welcome-Page-Boilerplate-For-TutsPlus上 。
至此,我假设您进行了以下设置:
- 本地计算机或Web服务器
- 一个演示WordPress网站仪表板
插件架构
我将创建一个简单的插件,当用户安装并激活该插件时会显示一个欢迎页面。 让我们讨论一下插件架构:
- WP-Welcome-Page-Boilerplate :包含我们的插件的文件夹。
- WP-Welcome-Page-Boilerplate / welcome / :欢迎页面相关内容的文件夹。
- WP-Welcome-Page-Boilerplate / welcome / img :图像文件夹。
- wp-welcome-page-boilerplate.php :根目录中的主插件文件。 该文件负责定义全局常量,并需要使用初始化程序文件,即welcome-init.php。
- welcome-init.php :初始化文件,它负责三件事:在插件被激活时添加一个瞬态,在插件被停用时将其删除,最后添加逻辑文件,即welcome-logic.php。
- welcome-logic.php :负责安全的欢迎页面重定向,创建欢迎页面子菜单并添加欢迎页面视图文件的逻辑文件,即welcome-view.php。
- welcome-view.php :该视图文件负责显示欢迎页面,并使用PHP和HTML构建。
- 有用于图像和CSS的可选文件夹,并且根据其用途进行命名。
您可以查看以下屏幕截图以验证体系结构。
插件工作流程
该插件的工作方式如下:
- 在插件激活时添加瞬态。
- 删除插件停用时的瞬态。
- 安全重定向到欢迎页面。
标准插件基础文件
让我们开始讨论基础文件的内容,该文件是wp-welcome-page-boilerplate.php
。 这是完整的代码:
<?php
/**
* Plugin Name: WP Welcome Page Boilerplate
* Plugin URI: https://code.tutsplus.com/articles/building-a-welcome-page-for-your-wordpress-product-introduction--cms-26013
* Description: Welcome page boilerplate for WordPress plugins.
* Version: 1.0.0
* Author: mrahmadawais, WPTie
* Author URI: http://AhmadAwais.com/
* License: GPL-3.0+
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
* Domain Path: /lang
* Text Domain: WPW
*/
if ( ! defined( 'WPINC' ) ) {
die;
}
插件的PHPDoc标头部分告诉WordPress文件是插件。 定义的参数表明如何处理数据。 标题至少可以只包含一个插件名称,但是可以并且通常应该包括几部分。 您可以在WordPress插件开发人员手册中阅读有关标头要求的信息。
下一组代码将执行安全检查。 如果有人尝试直接访问此文件,它将运行ABSPATH
检查,如果从外部WordPress进行访问,它将终止脚本。
之后,代码如下所示:
// Plugin version.
if ( ! defined( 'WPW_VERSION' ) ) {
define( 'WPW_VERSION', '1.0.0' );
}
// Plugin folder name.
if ( ! defined( 'WPW_NAME' ) ) {
define( 'WPW_NAME', trim( dirname( plugin_basename( __FILE__ ) ), '/' ) );
}
// Plugin directory, including the folder.
if ( ! defined( 'WPW_DIR' ) ) {
define( 'WPW_DIR', WP_PLUGIN_DIR . '/' . WPW_NAME );
}
// Plugin url, including the folder.
if ( ! defined( 'WPW_URL' ) ) {
define( 'WPW_URL', WP_PLUGIN_URL . '/' . WPW_NAME );
}
// Plugin root file.
if ( ! defined( 'WPW_PLUGIN_FILE' ) ) {
define( 'WPW_PLUGIN_FILE', __FILE__ );
}
我定义了一些全局常量,这些常量定义有关插件的版本,根文件夹,URL和插件的主文件的详细信息。
每个都包含一个if( ! defined() )
语句,这有助于避免由于重新定义全局常量而导致的任何错误。 我建议使用您的包名称作为前缀定义全局常量。 该插件中的软件包名称为WPW
,即WordPress Welcome。 因此,每个常量的前缀都是WPW_
。
定义的插件常量为:
-
WPW_VERSION
:插件版本 -
WPW_NAME
:插件文件夹名称 -
WPW_DIR
:插件目录 -
WPW_URL
:插件URL -
WPW_PLUGIN_FILE
:插件根文件
定义完所有这些常量后,我们将从欢迎文件的内容开始。
最后,我需要欢迎初始化程序和欢迎逻辑。
if ( file_exists( WPW_DIR . '/welcome/welcome-init.php' ) ) {
require_once( WPW_DIR . '/welcome/welcome-init.php' );
}
if ( file_exists( WPW_DIR . '/welcome/welcome-logic.php' ) ) {
require_once( WPW_DIR . '/welcome/welcome-logic.php' );
}
我喜欢使我的代码最少,准确且有据可查。 因此,与其将每个代码块添加到一个文件中,不如制作单个文件,每个文件仅具有一个目的。 这就是为什么我们有一个初始化程序文件,它将初始化与欢迎页面相关的所有内容。
require_once()
语句需要welcome-init.php
文件,但是在需要文件之前,我总是使用file_exists()
PHP函数对其进行检查,以避免万一文件被删除时发生致命错误。
相同的原则也适用于欢迎逻辑,我们将在本系列的下一部分中进行介绍。
您可以在GitHub上查看wp-welcome-page-boilerplate.php
文件的最终代码。
欢迎初始化器
为了管理所有与欢迎页面相关的文件,我创建了一个名为welcome的单独文件夹,并添加了welcome-init.php
文件。 该文件的整个代码控制欢迎页面的初始化。
让我们研究该文件的完整代码:
<?php
/**
* Welcome Page Init
*
* Welcome page initializer.
*
* @since 1.0.0
*/
if ( ! defined( 'WPINC' ) ) {
die;
}
/**
* Activates the welcome page.
*
* Adds transient to manage the welcome page.
*
* @since 1.0.0
*/
function wpw_welcome_activate() {
// Transient max age is 60 seconds.
set_transient( '_welcome_redirect_wpw', true, 60 );
}
register_activation_hook( WPW_PLUGIN_FILE, 'wpw_welcome_activate' );
/**
* Deactivates welcome page
*
* Deletes the welcome page transient.
*
* @since 1.0.0
*/
function wpw_welcome_deactivate() {
delete_transient( '_welcome_redirect_wpw' );
}
register_deactivation_hook( WPW_PLUGIN_FILE, 'wpw_welcome_deactivate' );
该代码以有关该文件的内联文档和ABSPATH
检查ABSPATH
。 现在,当插件分别被激活和停用时,我需要一种添加和删除瞬态的方法。
幸运的是,WordPress为此目的提供了两个钩子。
-
register_activation_hook( string $file, callable $function )
:当插件被激活时,这个钩子被触发。 它使用插件的主$ file和可调用的$ function作为参数。 -
register_deactivation_hook( string $file, callable $function )
:当插件被停用时,此钩子被触发。 它以插件主$ file和可调用$ function为参数。
因此,现在我们需要利用这些挂钩。 我为欢迎页面创建了一个临时页面。 该set_transient()
函数被调用自定义内wpw_welcome_activate()
函数。 在上一篇文章中,我们了解到set
操作将key , value和有效时间作为其参数。
因此,密钥_welcome_redirect_wpw
设置为true
为60
秒。 这定义了瞬变过期的最大年龄。
接下来是激活钩子,众所周知,该钩子仅在插件被激活时运行。 它将我们的瞬态添加到数据库中。 一旦瞬态出现在数据库中,就意味着我们可以检查它并将用户重定向到我们的欢迎页面。 如何重定向用户? 这就是我们将在下一篇文章中研究的内容。
之后,我编写了在停用插件后运行的代码。 我们需要一种功能,当用户停用插件时,瞬变会被删除。 为此,我调用了delete_transient()
函数,该函数使用密钥 _welcome_redirect_wpw
作为其参数。 然后是wpw_welcome_deactivate()
函数,该函数已添加到插件停用挂钩中。
这部分是可选的,但是我希望我的用户在激活插件时都能看到欢迎页面。 如果不这样做,则绝对可以忽略瞬态的删除。
到目前为止,我已经讨论了代码的创建和删除瞬态所必需的部分。 但是,仍然缺少用于欢迎逻辑的代码,该代码会将用户重定向到欢迎页面。 接下来,我们将解决这个问题。
结论
今天就是这样。 因此,我们已经完成了一半。 我们的欢迎页面的基本文件和初始化程序已准备就绪。 现在,我们需要创建逻辑并查看文件,这是下一篇文章的计划。
最后,您可以在我的个人资料页面上捕获我的所有课程和教程,还可以在我的博客上关注我,和/或在Twitter @mrahmadawais上与我联系 ,在那儿我写了有关WordPress的开发工作流的信息。
和往常一样,请不要在下面留下任何问题或评论,我将尽力回答每个问题或评论。