Day 19 - WooCommerce: 初始化付款外挂

虽然在 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
图 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
图 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
图 19-3: wc-sinopac-payment.php

这支用来初始化外挂的档案,只要启用後,就会被载入执行。

第 47-54 行 笔者习惯的起手式,会定义常用和路径的常数。
第 61 行 由於程序语法有版本上的限制,没达此版本以上不执行。
第 63 行 引入本次会用的一些帮助函式。
第 64 行 引入 Composer 自动载入器。
第 66 行 Todo 事项,准备开始进行。

总结

启用後,外挂已经开始执行了。Day 20 会介绍的是,定义信用卡付款闸道 (payment gateway),先整合永丰金流的信用卡付款到 WooCommerce 中。欢迎有兴趣的朋友继续锁定本专栏喔。^^"


<<:  Day 18 - MSSQL 基本 & 工具介绍

>>:  Factory 工厂模式

【Day16】电子商务与行销篇-电子商务

#odoo #开源系统 #数位赋能 #E化自主 从Google 在 2020 年 12 月发表的智慧...

第二十一天:Gradle Kotlin DSL

Gradle 的核心是由 Java 实作,但为了提供更好扩充的语法,Gradle 一开始使用 Gro...

企划实现(12)

FB登入 第10步:开启 /app/res/values/strings.xml 档案。 FB会自动...

Day4|【Git】用户名称与信箱- Git的初始设定与 config

💡 开始使用 Git 之前,我们需要先设定使用者名称及电子邮件地址。 为什麽需要设定用户名称及 E-...

IBM Cloud CLI

注册完成後,今天来安装并验证 IBM Cloud CLI 1. 下载并安装 IBM Cloud CL...