最近在學習開發Wordpress
的外掛,突然新增了一些特別的WP知識點
,故此紀錄。
開發環境初探
使用 Docker
Wordpress 外掛開發切記的幾個核心就是:
- 不要改到 Wordpress 的核心(例如
wp-includes
)
- 盡量可以使用
hook
,也就是很多套件提供的do-action
和apply_filter
等方式,對於我們開發者而言,對應上就是add-action
和add-filter
等等
詳情可以參考此網站:https://ithelp.ithome.com.tw/articles/10242112
不過啦,我也還在這學習的過程中,或許以後還有更多不同的體悟XD
而我自己擅長Docker
,用他開發的最大好處就是我認為絕對不會改到 Wordpress 和套件的核心
。除非你自己進去 cli 給他胡搞瞎搞這樣。
以下就提供我工作中常用的docker-compose.yml 配置。搭配phpmyadmin
幫助我進入資料庫做 check
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
platform: linux/x86_64 # 因為最近工作機換成 M1 系列,發現需要額外加上這個參數才不會出錯
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
# 方便debug 與開發上使用,如果還想要額外的 volumes 可以另外在加
- ./wp-config.php:/var/www/html/wp-config.php
- ./debug.log:/var/www/html/wp-content/debug.log
# develop plugins
- ./src/r567tw-tappay:/var/www/html/wp-content/plugins/r567tw-tappay
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
phpmyadmin:
links:
- db:db
image: phpmyadmin/phpmyadmin
ports:
- "8000:80"
restart: always
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: root
platform: linux/x86_64 # 因為最近工作機換成 M1 系列,發現需要額外加上這個參數才不會出錯
volumes:
db_data: {}
|
打完收工。接下來使用docker-compose up -d
就可以快快樂樂的開發plugin
和theme
囉 😆
使用 LocalWP
不過啊,最近我還是趁著Udemy
打折買了Wordpress
開發的相關課程,覺得也是蠻有收穫跟學習的,他在課程裡面介紹一個開發的工具也很方便,我覺得可以放在這裡給大家看看,是知名Wordpress
界 WP-開發的localWp
,感覺真的也很不錯用啊啊啊
https://localwp.com/
對了,我在上的課程是:Become a WordPress Developer: Unlocking Power With Code
推薦給大家^^
MU-plugin
Wordpress 基本上他其實已經可以作為一個產品
了,如果你是個有能力的開發者,用它架站基本上只是半天甚至是幾秒鐘可以完成的事情。而它提供了蠻多pattern
可以讓開發者去遵循,但我認爲沒有像laravel
這麼方便啦,畢竟兩者完全不太一樣不太能比較…
而我發現到在Wordpress
有一個mu-plugin
的概念,它位於wp-content/mu-plugins
這裡,mu
的意思就是Must Use
,也就是你不會在後台看到他,而且他一定會被啟動的。
所以說,上面的yaml
檔我甚至改成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# (略)...
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
# 方便debug 與開發上使用,如果還想要額外的 volumes 可以另外在加
- ./wp-config.php:/var/www/html/wp-config.php
- ./debug.log:/var/www/html/wp-content/debug.log
# develop plugins
- ./src/r567tw-tappay:/var/www/html/wp-content/plugins/r567tw-tappay
+ # Mu plugins
+ - ./src/mu-plugins:/var/www/html/wp-content/mu-plugins
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
# (略)...
|
供文件作參考:https://wordpress.org/documentation/article/must-use-plugins/
覺得Wordpress
的架構才是神架構
之前在讀程式設計師從零開始邁向架構師之路這本書,學到蠻多的架構設計相關的知識。
其中,我最喜歡的就是:
架構設計的目的是為了解決複雜度帶來的問題
想到以前有個很爛很爛的經驗,公司找了個「架構師」過來,發現他根本…再增加複雜度 XD
約莫去年底才看完那本書,然後老實講技術書很難寫心得文,於是使用筆記給他筆記起來,提供大家參考參考:架構設計筆記
在講到可擴展性
的章節這裡,作者整理出幾種常見的模式
- 分層架構
- SOA 架構
- 微服務
- 微內核架構(
plug-in
)
原來,Wordpress
使用所謂的theme
和plugin
管理,正就是書中所提到的微內核架構
,Wordpress
專注他的核心、其他功能就可以用hook
的方式勾進去,難怪會有這麼高的市佔率!
可說是Wordpress
不滅,PHP
也不滅啊…