wordpress网站开发——开发插件(一)

Posted by

1.wordpress插件的位置在网站子目录wp-content/plugins下,如果我们想要开发一个名字为test的插件,我们可以在这个目录下新建一个test目录,然后在test目录下新建test.php

然后,我们需要告诉wordpress我们的插件,打开test.php,

然后进行一个声明

声明以注释来进行:

<?php
/**
 * plugin Name: test
 * Version: 1.0
 * Description: The first plugin I have created
 * Author: lcj
 * Author URI: https://lcj.ink
**/

?>

其中plugin Name是我们自定义的插件的名字,Version是插件的版本,Description是插件的描述,Author是插件作者,Author URI是作者主页,插件的声明还有很多,如果我们想给其他人用,就需要GUI等,这些我们以后会讲到。

plugin Name为必须,其他的可以自行选择

2.wordpress插件流程:

编写函数 ——> 使用wordpress钩子,在特定条件下触发函数

wordpress常用的钩子:

①add_action():这是一个动作钩子,

②do_action():这是一个动作钩子,

③add_filter():这是一个过滤器钩子

注:动作是wordpress运行到某些环节,或者在某些事情发生时,就会被执行的一种挂钩。任何得插件都可以通过动作接口来指示系统在遇到这些环节或者2022年5月14日11:47:24时的时候,就执行指定的PHP函数。

过滤器的是wordpress用于修改即将要保存或者发送出去的数据的一种挂钩,任何的插件都可以通过过滤器接口来指定系统在遇到某些环节或者事件的时候,就执行指定的PHP函数去修改特定的数据。

某些时候动作或过滤器可以达到相同的效果。比如要修改文章的内容,可以把插件挂载到动作 publish_post 上,在文章的内容保存到数据库前就修改它。也可以把插件挂载到过滤器 the_content 上,在文章的内容发送到浏览器前修改它。

这里我们简单介绍一下add_action()的基本用法:

add_action('动作名', '相应函数名', [优先级], [参数目录])

①动作名:

wordpress所提供的动作名,用于标识在那个动作发生时,执行相应函数

②响应函数:

当动作hook_name发生时需要执行的响应函数的名字。可以是PHP标准的函数,或者时wordpress内的函数,或者时插件内自定义的函数

③优先级:

这是一个可选的参数,默认值为10。由于可以把多个函数注册到同一个动作,所以这个参数是用于指定注册到这个动作中的这个函数执行的优先级,数字越小优先级越高,执行得也越早,反之亦然。如果若干个函数以相同的优先级注册到同一个动作,那么执行顺序则是由它们注册的先后顺序决定的。

④参数数目:

这是一个可选的参数,默认值是1。由于某些动作可能会把多个参数传给响应函数,所以有时候需要指定响应函数能够接受多少个参数。

常用的动作名有:

①init:

在大多数的wordpress都建立以后,几乎所有的内容都就绪了,wordpress会调用这个钩子,因此我们可以理解成,如果我们使用这个钩子,那么我们的插件在任何时候做任何需求的事情

②save_post:

当wordpress保存一篇文章时,将会运行save_post钩子,这个钩子会传递两个参数给回调函数:保存的文章ID和文章对象:

do_action('save_post',$post->ID,$post);
fucntion ceshi() {
    // 执行某些操作
}
add_action('save_post','ceshi')

③plugins_loaded:

在大多数wordpress文件加载完成后,并在pluggable函数和wordpress开始执行任何函数前触发。

在大多数的插件中,在这个钩子触发之前,不应该执行任何其他的代码。plugins_loaded在所有用户启用的插件都被wordpress加载之后执行

wordpress常用内置函数:

wordpress的函数我们在写插件时可以直接使用

①wp_get_current_user():

用于检测当前用户,使用这个函数,我们可以针对未登录用户,和登录的不同用户进行不同的服务

$current_user = wp_get_current_user();
$username = $current_user->user_login;    //用户名,如果没登录,则为NULL
$user_email = $current_user->user_email;  //用户的邮箱
$user_firstname = $current_user->user_firstname;   //firstname
$user_lastname = $current_user->user_lastname;     //lastname
$user_display_name = $current_user->display_name;  //display name
$user_ID = $current_user->ID          //用户的ID

②wp_redirect():

重定向函数,用于页面的重定向

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'Wordpress' )

注意:wp_redirect()不会自动退出,使用时需要在后面添加退出函数

①$location:

字符串,必选,要重定向的URL,需要时绝对URL地址

②$status:

证书,可选,跳转时的HTTP状态码,默认为302(临时重定向状态码)

③$x_redirect_by:

字符串,可选,执行重定向的应用,默认值为”Wordpress”

<?php
wp_redirect('https://lcj.ink',301);
exit;
?>