Wordpress插件开发过程

考虑:Linux + Apache + MySQL + PHP
(https://codex.wordpress.org/Nginx)

Wordpress代码规范:
http://codex.wordpress.org.cn/WordPress_%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83
WordPress编码标准:
https://make.wordpress.org/core/handbook/best-practices/coding-standards/

插件开发者手册:https://developer.wordpress.org/plugins/
主题手册:https://developer.wordpress.org/themes/
REST API:https://developer.wordpress.org/rest-api/

一个主题控制着内容的呈现 ;
一个插件是用来控制你的WordPress网站的行为和功能;

插件API /add_filter()参考:https://codex.wordpress.org/Plugin_API/Filter_Reference
插件API /add_action()参考:https://codex.wordpress.org/Plugin_API/Action_Reference

角色|能力:https://codex.wordpress.org/Roles_and_Capabilities

设计和布局:
https://codex.wordpress.org/zh-cn:%E5%8D%9A%E5%AE%A2%E7%9A%84%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%B8%83%E5%B1%80

UI插件:
http://www.jeasyui.net/
http://v3.bootcss.com/

调试插件:
https://developer.wordpress.org/themes/getting-started/setting-up-a-development-environment/#plugins

查询监视器:https://wordpress.org/plugins/query-monitor/,在顶部工具栏
主题检查:https://wordpress.org/plugins/theme-check,在外观>Theme Check
日志已弃用的声明:https://wordpress.org/plugins/log-deprecated-notices/,在工具deprecated Calls

使用MVC开发插件在Wordpress

https://iandunn.name/content/presentations/wp-oop-mvc/mvc.php

WordPress的插件骨架:
https://github.com/iandunn/WordPress-Plugin-Skeleton
前端组件库 http://getbootstrap.com/

在WordPress插件中实现MVC模式
MVC:

  1. 视图:用户界面
  2. 模型:业务逻辑层
  3. 控制器:应用程序逻辑层

Wordpress插件开发过程_第1张图片 Wordpress插件开发过程_第2张图片

Wordpress REST api

REST API:
https://developer.wordpress.org/rest-api/
http://v2.wp-api.org/
http://www.ruanyifeng.com/blog/2014/05/restful_api.html
Nginx配置Restful风格url:
http://blog.csdn.net/u013961139/article/details/50792444

C:\Users\Administrator>curl -I http://localhost:8089
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Sun, 12 Nov 2017 04:39:34 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.1.10
Link: <http://localhost:8089/index.php?rest_route=/>; rel="https://api.w.org/"

现在你只能能过以下代码访问路由

http://localhost:8089/index.php?rest_route=/hello-world/v1/phrase

在这里可以看到返回信息的描述结果
http://wp-api.org/guides/getting-started.html

该Link头告诉我们,对于API的基本网址为 http://example.com/wp-json。任何路线都应附加到此。例如,我们将在一秒钟内使用的API索引在/路由中可用,所以我们将其追加到URL以获取http://example.com/wp-json/ (注意尾部的斜杠)。
对于没有启用漂亮永久链接的网站,这将会返回类似的内容 http://example.com/?json_route=; 该路线应该再次作为字符串直接附加在API索引中http://example.com/?json_route=/

固定链接设置(在你启动的Wordpress程序>设置>固定链接,里设置):
https://codex.wordpress.org/File:permalink-settings.png

https://codex.wordpress.org/zh-cn:%E4%BD%BF%E7%94%A8%E5%9B%BA%E5%AE%9A%E9%93%BE%E6%8E%A5

Nginx配置:
https://codex.wordpress.org/Nginx
https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

如果您使用默认永久链接(查询参数),则可以访问该API ?rest_route=/,例如http://demo.wp-api.org/?rest_route=/

配置完成后,再次查询

C:\Users\Administrator>curl -I http://localhost:8089
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Sun, 12 Nov 2017 07:42:11 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.1.10
Link: <http://localhost:8089/wp-json/>; rel="https://api.w.org/"

Wordpress

https://wordpress.org/plugins/

内置的WordPress功能:

sanitize_*()
*_exists()
*_validate()
is_*()
esc_*()
_e()
__()
wp_create_nonce()

函数查询:
https://developer.wordpress.org/reference/
钩子库:
https://adambrown.info/
代码生成:
https://generatewp.com/

WordPress包含一个操作数据库的类——wpdb,该类基于ezSQL(由Justin Vincent维护的数据库操作项目)编写,包含了其基本的功能。
https://codex.wordpress.org/zh-cn:Class_Reference/wpdb

https://codex.wordpress.org/Function_Reference/wpdb_Class

PHP

PHP教程:http://www.w3school.com.cn/php/

REST API(Create a REST API with PHP):
http://hmw.iteye.com/blog/1190827
https://www.w3cschool.cn/php/php-restful.html

PHP 变量规则:

  1. 变量以 $ 符号开头,其后是变量的名称
  2. 变量名称必须以字母或下划线开头
  3. 变量名称不能以数字开头
  4. 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
  5. 变量名称对大小写敏感( y Y 是两个不同的变量)

注释:PHP 变量名称对大小写敏感,关键字大小写不敏感!

PHP 有三种不同的变量作用域(关键字配置):

  1. local(局部)
  2. global(全局)
  3. static(静态)

Local 和 Global 作用域(默认):

  1. 函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
  2. 函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。

PHP 4.1.0+,超全局变量
在全部作用域中始终可用的内置变量

这些超全局变量是:

$GLOBALS  #$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)
$_SERVER  #$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。
$_REQUEST #$_REQUEST 用于收集 HTML 表单提交的数据。
$_POST    #$_POST 广泛用于收集提交 method="post"HTML 表单后的表单数据。$_POST 也常用于传递变量。
$_GET     #$_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。
$_FILES
$_ENV
$_COOKIE
$_SESSION

$_SERVER[“PHP_SELF”] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。

htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 < 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。

PHP 常量:

  1. 常量是单个值的标识符(名称)。在脚本中无法改变该值。
  2. 有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。
  3. 注释:与变量不同,常量贯穿整个脚本是自动全局的。

注:常量类似变量,但是常量一旦被定义就无法更改或撤销定义。

如需设置常量,请使用 define() 函数 - 它使用三个参数:

  1. 首个参数定义常量的名称
  2. 第二个参数定义常量的值
  3. 可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。

类常量-标识符const
可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。
常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。

运算符:
字符串

.

.=

比较

=== #如果 $x 等于 $y,且它们类型相同,则返回 true。

!== #如果 $x 不等于 $y,或它们类型不相同,则返回 true。

逻辑

xor #如果 $x$y 有且仅有一个为 true,则返回 true

数组

=== #如果 $x 和 $y 拥有相同的键/值对,且顺序相同类型相同,则返回 true。

!== #如果 $x 与 $y 完全不同,则返回 true。

函数
PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。

PHP 用户定义函数(声明以关键字 “function” 开头):

  1. 除了内建的 PHP 函数,我们可以创建我们自己的函数。
  2. 函数是可以在程序中重复使用的语句块。
  3. 页面加载时函数不会立即执行。
  4. 函数只有在被调用时才会执行。

注释:函数名能够以字母或下划线开头(而非数字)。
注释:函数名对大小写不敏感。
提示:函数名应该能够反映函数所执行的任务。

默认参数:function setHeight($minheight=50)

数组
在 PHP 中,有三种数组类型:

  1. 索引数组 - 带有数字索引的数组
  2. 关联数组 - 带有指定键的数组
  3. 多维数组 - 包含一个或多个数组的数组

count() 函数用于返回数组的长度(元素数)

关联数组:

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

遍历


$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");

foreach($age as $x=>$x_value) {
  echo "Key=" . $x . ", Value=" . $x_value;
  echo "
"
; } ?>

排序

sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序

表单认证

通过以下代码认证每个提交的表单数据:


// 定义变量并设置为空值
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

其它
foreach - 遍历数组中的每个元素并循环代码块(只适用于数组,并用于遍历数组中的每个键/值对)

你可能感兴趣的:(php)