如何避免 git pull 產生不必要的 merge commit

之前跟別人協作的時候,使用 git pull 並 commit 後會產生額外的 merge 訊息。

這是因為其實 git pull 這個動作是包含了 git fetch 和 git merge

如果你不希望產生額外的 merge commit,可以透過 rebase 來處理

git pull --rebase origin main

上面的指令,其實結合了 git fetch 和 git rebase,會將我們 local 的 commit 放在遠端 commit 的前面

git fetch
git rebase origin main

參考資料

https://gitbook.tw/chapters/github/pull-from-github

https://coderwall.com/p/jgn6-q/git-pull-is-evil

https://dev.to/mliakos/don-t-git-pull-use-git-pull-rebase-instead-5b8k

WooCommerce Order CRUD

$order->update_meta_data();
$order->save();

這邊的 update_meta_data,可能會有點誤解,實際上 update_meta_data 並沒有牽涉任何資料庫的操作,而是將 order 物件內的資料進行更新,最後還是要呼要 $order->save() 來將資料存到資料庫中

https://woocommerce.com/document/developing-using-woocommerce-crud-objects/

https://woocommerce.com/posts/extending-crud-data-stores/

WordPress 5.9 新增的內容類型 (Post Type)

WordPress 5.9 新增了4種內容類型 (Post Type),這4種內容類型會在你啟用區塊佈景主題時使用到。

這4種內容類型包含:

  • wp_template:佈景主題使用的區塊範本
  • wp_template_part:區塊範本使用的範本組件
  • wp_global_styles:針對目前使用中的佈景主題,管理者建立和儲存的樣式
  • wp_navigation:導覽選單

要注意的是,這些內容類型是保留字,只有 WordPress 內部使用。

如何測試全站編輯

通常在 WordPress 正式發佈之前都會有一段時間,而這段時間網站管理者或是開發者就可以透過測試版本來進行測試,避免正式版本釋出後更新到網站出問題,開發者也可以提早針對有問題的功能進行相對應的修改。隨著 WordPress 5.9 即將發佈,建議站長和開發者儘早測試新版本在自己網站上和客製化功能的相容性。本篇文章即在介紹如何測試最新版本 WordPress 的全站編輯功能。

步驟1 – 安裝 WordPress

如果你要測試開發中的 Gutenberg 功能,至少要 WordPress 5.8 以上的版本。另一個方式是安裝開發中的 WordPress 分支版本。如果你安裝開發中的 WordPress 分支版本,你可以選擇搭配 Gutenberg 外掛進行測試,或是不使用 Gutenberg 外掛也可以,因為 Guteberg 外掛會合併進入到之後發佈的 WordPress 區塊編輯器中。

步驟2 – 安裝 Gutenberg

要讓全站編輯功能可以啟用,你必須要安裝最新版本的 Gutenberg 外掛。你可以在 WordPress 後台進行安裝,或是到 WordPress 官方外掛目錄下載。https://wordpress.org/plugins/gutenberg/

你也可以使用開發中的 Gutenberg 外掛,但這不是必需的。你可以從 Gutenberg 的 Github 存放庫來下載最新開發中的 Gutenberg。

git clone https://github.com/WordPress/gutenberg

下一步使用命令列工具到 Gutenberg 的目錄下執行

npm install

最後再執行

npm run build

如果你沒有完成以上步驟,在 WordPress 後台會看到相關的提示訊息

步驟3 – 安裝區塊佈景主題 (Block Theme)

最後你需要安裝一個支援全站編輯的區塊佈景主題。你可以使用將來在 5.9 版本中內建的預設佈景主題  Twenty twenty-Two

以上就是測試全站編輯的準備步驟,接下來你就可以開始體驗全站編輯的功能囉!

WPCS.io – 建立 WaaS 的新選擇

WaaS (WordPress as a Service/Website as a Service) 是一個將網站打造成一個可重複販售商品的概念。像市面上許多的架站服務一樣,例如 Wix 或是 Squarespace。透過 WaaS 來銷售的好處是,你可以專注在某個利基市場,同時透過規格化的商品,降低每次銷售所需要的人力介入。這應該是很多用 WordPress 接案者的夢想。

在 WordPress 的領域中,過去要做 WaaS,很多人會透過 WP Ultimo 這個 WordPress 外掛來處理,WP Ultimo 是以 Multisite 為架構,因此當子網站一多時,可能會有水平擴展的問題,因為每個網站都是架設在同一個主機上,如果當中有某些站流量比較高,可能就會排擠到其他流量小的網站。

而現在有了另一個新選擇 WPCS,WPCS 是一個雲端的服務,跟 WP Ultimo 以 Multisite 為基礎不同,WPCS 的概念則是 Multi-tenant。在 Multi-tenant 的設計概念下,不同的網站所使用的資源會是獨立開來的,因此不會互相影響。

當然過去 Multi-tenant 在 WordPress 社群並不是沒有人討論和實作過,不過大多是直接從 WP 本身去處理。

WPCS 則是透過 kubernetes 技術來將每個網站的資料庫區分開來。

https://wpcs.io/articles/tutorial-how-to-start-a-waas-using-wpcs

git 如何修改最近一次的 commit message

如果你想要修改最近一次的 commit message,可以透過 –amend 指令來修改。

未 push 的修正

git commit --amend -m "新的訊息"

修正完後再 push 即可

已 push 的修正

若你的修正之前已經 push 到遠端的存放庫,則在 push 時要使用 –force 指令

git push --force origin master

如何在 WP 外部呼叫 WP 函式

有時候為了快速測試一些功能,會寫一些簡單的 PHP 來測試功能,如果你要呼叫 WP 的函示,就必須在佈景主題或是外掛中攥寫相關的程式碼,但這樣相當的麻煩。

如果你只是希望做一些簡單的測試,你可以在網站的根目錄下,建立一個 PHP 檔案,例如 test.php

然後在最前面加上以下程式碼:

<?php
define( 'WP_USE_THEMES', false ); 
require( './wp-load.php' );

這樣就可以直接呼叫 WP 的函式了!

<?php
define( 'WP_USE_THEMES', false ); 
require( './wp-load.php' );

$current_user = wp_get_current_user();