虽然在 WordPress 中扩充功能有很多方式,例如在布景主题上使用子布景主题 (child theme) 并在其 function.php 中写扩充功能。不过那是糟糕的作法。考量很多原因,例如载入顺序较後,可使用的 Hook 受限,二是遇到出错时无法像停用外挂般,停用子布景主题,因此采用编写外挂程序的方式在 WordPress 的生态圈中是比较正统的方式,维护较简单,万一外挂受欢迎的话,还有商业化营利的机会。
这一系列的 WooCommerce 电商串接实战,就是采用设计外挂的方式进行串接实作。
这边的命名指的是外挂的网址 slug,也是外挂的识别字串。
根据 WordPress 的外挂规则,不能把商标放在 slug 的第一位,因此命名会先加个前辍 wc
。
wc-sinopac-payment
是笔者为这次的外挂命名。在写这篇文章的同时,也以该名称建立了 GitHub 的储存库
原始码都会放在上面。
在 WordPress 的 wp-content/plugins
目录下建立我们这次要设计的永丰金流收款外挂的目录 wc-sinopac-shipment
。并开建立一个同名的 PHP 档案。
注:不一定要同名档案,只是笔者习惯这麽做。在去年的铁人赛提到 WordPress 外挂的初始化,有比较详细的介绍,有兴趣可以看看该篇文章。
图 19-1: wc-sinopac-payment.php 外挂识别区块
在 WordPres 後台的外挂列表页时,会扫描 PHP 档案的识别用的文字区块,来判定是不是外挂档案。因此在档头放进 WordPress 外挂识别用的字串,如下。
<?php
/**
* Plugin Name: WooCommerce SinoPac Payment
* Plugin URI: https://github.com/terrylinooo/wc-sinopac-payment
* Description: Credit card and virtual account (ATM) payment methods powered by SinoPac bank.
* Version: 1.0.0
* Author: Terry Lin
* Author URI: https://terryl.in/zh/
* License: GPL 3.0
* License URI: http://www.gnu.org/licenses/gpl-3.0.txt
* Text Domain: wc-sinopac-payment
* Domain Path: /languages
*/
虽然这支外挂的主要使用者会是在台湾,不过笔者依然以英文为主,再利用 WordPress 的多国语系机制来支援不同国家的使用者。外挂在释出的时候也会夹带繁体中文及简体中文的多语档案。
图 19-2: WordPress 後台 - 外挂列表
一旦完成初始化档案,进到 WordPress 的後台,外挂列表的页面,会看到 WooCommerce SinoPac Payment 这支外挂已经在列表上了。
按下「启用」,就会载入该支档案。
这支外挂的目录结构会是这样的。
wc-sinopac-payment
├── controllers
├── includes
├── services
├── vendor
├── views
├── LICENSE
├── README.txt
└── wc-sinopac-payment.php
WordPress 外挂的开发者通常会把 Hook 使用和逻辑通通写在一起。由於笔者受到 PHP 框架常用的 MVC 架构影响较深,也觉得逻辑入口和实际处理逻辑的地方切分出来会比较好维护。
如上目录树状结构所示,笔者会把 Hook 的入口写在 controllers 目录中,而像是建立订单、改变订单状态等逻辑放在 services 中,在 HTML 输出的部分放在 views 目录中。
图 19-3: wc-sinopac-payment.php
这支用来初始化外挂的档案,只要启用後,就会被载入执行。
第 47-54 行 笔者习惯的起手式,会定义常用和路径的常数。
第 61 行 由於程序语法有版本上的限制,没达此版本以上不执行。
第 63 行 引入本次会用的一些帮助函式。
第 64 行 引入 Composer 自动载入器。
第 66 行 Todo 事项,准备开始进行。
启用後,外挂已经开始执行了。Day 20 会介绍的是,定义信用卡付款闸道 (payment gateway),先整合永丰金流的信用卡付款到 WooCommerce 中。欢迎有兴趣的朋友继续锁定本专栏喔。^^"
#odoo #开源系统 #数位赋能 #E化自主 从Google 在 2020 年 12 月发表的智慧...
Gradle 的核心是由 Java 实作,但为了提供更好扩充的语法,Gradle 一开始使用 Gro...
FB登入 第10步:开启 /app/res/values/strings.xml 档案。 FB会自动...
💡 开始使用 Git 之前,我们需要先设定使用者名称及电子邮件地址。 为什麽需要设定用户名称及 E-...
注册完成後,今天来安装并验证 IBM Cloud CLI 1. 下载并安装 IBM Cloud CL...