WordPress wp_remote_post curl: (35) Peer reports incompatible or unsupported protocol version

分享如何處理使用 WordPress 的 wp_remote_post() 函數時遇到的錯誤:curl: (35) Peer reports incompatible or unsupported protocol version,探討解決方案。

範例程式碼

以下是我使用的範例程式碼,用於向 API Server 傳送資料:

$crm_api_url = 'https://crm.example.com/api/hello';
$response = wp_remote_post( $crm_api_url, [
'body' => $post_body,
]);
wp_die( print_[......]

Read more

WooCommerce 列表頁顯示商品筆數

使用 Elementor 編輯商品列表頁,開啟分頁,發現都顯示16筆,即使我在 Elementor 原生的 Widget 中設定 3*3 仍然無法改變,一樣給我跑出16筆,因為3欄的關係,所以最後一筆商品會落單,這樣很怪

原因不明,可能某某插件,覆蓋了商品列表預設顯示筆數,所以要重新定義商品顯示筆數,把下方代碼貼到當前主題根目錄的 functions.php 檔案中,重新整理商品列表頁 ( 有開快取請先清除快取再重整 )

正確顯示9筆了,多舒服阿!!

Reference
https://woocommerce.com/document/change-number-of-products-display[……]

Read more

WooCommerce 新增自訂義頁籤及內容

WooCommerce 商品頁下方預設有一個頁籤的設計,有網頁設計經驗的對這設計並不陌生,可以像一般電商平台一樣用來放尺寸表、退換貨說明、購物條款等附加內容,可說是一個很實用的功能。

但到後台的商品編輯頁面,遍尋不著新增頁籤及內文的介面,本文將介紹如何在商品頁中透過程式碼新增自訂義頁籤及內文

上方為新增自定義頁籤的範例,可將上方程式碼貼到主題根目錄下方的 functions.php 中,就可多出一個頁籤拉

[……]

Read more

Yoast SEO 麵包屑路徑,刪除最後一個節點

Yoast SEO 這個百萬活躍用戶級的插件,這我就不多做介紹了,Yoast SEO 中提供了麵包屑路徑這個功能,這是一個很好用的功能,不過卻沒有太多選項,我不知道是否是免費版的關係,目遇到一個問題,麵包屑路徑會連同當前這個頁面的標題也顯示出來,這就比較困擾了,如此會造成頁面標題重複且雜亂。

下圖是很普遍的編排方式,下方顯示當前頁面標題,上方則顯示麵包屑路徑,麵包屑方便使用者了解這頁面或文章的階層結構,但我覺得在最後一個節點顯示「當前」的頁面標題很怪,會與下方頁面標題重複,邏輯上,我已經在這頁了,應該不用顯示這標題才對,只要方便我返回此文章的列表頁就可以了,如下圖所示 ( 標題文字為假字 )

因此[……]

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 使用 Namespace Warning call_user_func_array() expects parameter 1 to be a valid callback

在開發 WordPress Plugin 常用字串來代表 functions ,最常用的莫過於add_action() &add_filter()

實際上在 WordPress API 中是用 php call_user_func() 來執行傳入的 function,但到了執行階段並沒有辦法直接調用在 Namespace 中的 function , 否則 Namespace 就沒意義了。

所以在 Namespace 文件中用上述的方法呼叫

會得到下列錯誤訊息,主要是找不到傳入的 function

Warning call_user_func_array() exp[……]

Read more

WordPress Contact Form 7 (CF7) 新增自訂義欄位

Contact Form 7 這插件應該不用我多說了,是WordPress百萬級插件,但他的表單欄位有限,是一些常用的欄位,這樣怎麼能應付刁鑽的客戶呢?本篇介紹幾種方式新增自訂義欄位

  1. 透過 CF7 shortcode 來建立自訂義欄位。
  2. 透過 CF7 的 wpcf7_form_elements 這個 filter 新增自訂欄位HTML。
  3. 透過 WP shortcode 新增自訂欄位HTML。

透過 CF7 shortcode 來建立自訂義欄位。

Contact Form 7 提供的 shortcode API 跟 WordPress 不同,Contact Form 7 shortcode AP[……]

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

$wpdb get SQL string 取得mySQL查詢字串

$wpdb 取得MySQL查詢字串

WordPress 提供了 wpdb 這 Class 有很多方法可以操作資料庫,如果是用 wpdb 的內建方法來處理查詢,有時除錯會想看最終組出來送到資料庫的查詢字串,只要 echo $wpdb->last_query ,就可以取得囉。

範例:

參考:

[……]

Read more

WordPress thumbnail default size 預設縮圖尺寸表

WordPress 預設縮圖尺寸表

尺寸名 (字串)大小尺寸說明thumbnail小150 x 150 強制裁剪尺寸medium中等300 x 300 最大高度300像素medium_large中大768 x 無限高 WP4.4增加large 大1024 x 1024 最大高度1024像素full完整尺寸原始大小 

WooCommerce 預設縮圖尺寸表

尺寸名 (字串)大小尺寸說明shop_thumbnail小180 x 180強制裁剪尺寸shop_catalog中300 x 300強制裁剪尺寸shop_single中600 x[……]

Read more