「WooCommerce 綠界物流 API 無法取得運送單號:限制結帳電話格式避免運送問題」

在 WooCommerce 商城中使用綠界科技物流服務(例如超商取貨)是一個常見的做法,但你可能會發現一個潛在的問題:用戶下單時,結帳畫面對電話欄位並沒有進行格式限制,而綠界科技在生成運送單號時卻對行動電話有嚴格的格式要求。

這樣的結果會導致:

為了避免這種情況,我們可以在 WooCommerce 的結帳頁面提前限制用戶的電話輸入格式,確保數據的正確性,避免運送流程中斷。

綠界科技的行動電話格式需求

綠界對於行動電話有以下明確的要求:

若用戶輸入的電話不符合這些格式,綠界將拒絕生成運送單號,導致物流流程出錯。

解決方法:前後端限制電話格式

為了解決這個問題,我設計了一個完整的解決方案,包含前端與後端的雙重驗[……]

Read more

WordPress 連結由「絕對路徑」改為「相對路徑

WordPress 原生絕對路徑轉相對路徑的方法 wp_make_link_relative 在 /wp-includes/formatting.php

過濾連結

連結相關的過濾器 (filter),透過 wp_make_link_relative 把絕對路徑改為相對路徑

Example:

過濾所有連結

一次轉完所有連結相關的過濾器 (filter) ,但排除 WordPress sitemap 中的連結,WordPress sitemap 仍維持絕對路徑

Example:

排除部分連結連結,維持絕對路徑

上面方法雖然方便,但有些時候,我們還是需要維持絕對路徑

例如:R[……]

Read more

WordPress Load css or script in Footer

主題或外掛載入 CSS 或 JS 檔案

一般情況下,會在 Head 中載入 CSS & JS 檔,可參考此篇:
WordPress 插件或主題載入 CSS & JS 檔案

於 Footer 中載入 CSS 或 JS 檔案

放在 footer 中主要有兩種情況,不那麼重要的檔案,放在 Footer 中最後載入,可以增加頁面開啟的速度,另外一種就是主題或插件把 style 直接 output 在頁面中,我們在 Head 中載入的 CSS 無法覆蓋這些樣式,所以放到 Footer 以覆蓋這些樣式。

範例:

[……]

Read more

WordPress 文章不分頁顯示全部,不使用WP_Query(),使用pre_get_posts

不限制顯示文章筆數(文章不分頁)

在自訂頁面上顯示所有文章,我們可以用 WP_Query()  輕易達成, 在 posts_per_page 參數設為 -1 即可,但有時我們需要在主題頁面上顯示所有文章,但又不想再跟資料庫要一次資料,多少會影響效能,或是開發插件,並不會去動到主題,所以就沒辦法使用 WP_Query()  ,所以可以改使用 pre_get_posts  這個鉤子,去修改Main Query 參數,下方針對兩種方法作介紹。

使用 WP_Query()

pre_get_posts_fun

使用這個鉤子,要把下列代碼,貼至主題根目錄下的 fu[……]

Read more

WordPress WP_Query() result posts object to an array

WP_Query()

是一個很方便取資料的Class,可依照參數取得篩選出的Post,實體化後可取得很多相關資訊,但我們最常用的就是posts這個成員

$posts = $query->posts;

這是取得我們主要資料,也就是條件下篩選出來的Post,回傳值為 WP_Post object Array,當然這沒有不好,但有時我們會希望它是一個Post Array的二維陣列,例如我要用在後台的 list Table 就需要用到這種資料格式

WP_Post Object 轉換成 Array

以下提供一個簡單的轉換方式,用 PHP array_map() 一次次把所有  WP_Po[……]

Read more