從 2014 年合作至今,Google Y26 新制用一個 \,000 美金的年銷售門檻,靜靜地把我們這群以技術服務為本的中小企業夥伴,鎖在了門外。這不是抱怨,是一封遲來的分手信。[……]
分類: WordPress
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_r( $response, true ) );
此程式碼導致錯誤,因為主機與 API Server 支援的 SSL/TLS 協議不匹配。
系統環境
發生原因
檢查 OpenSSL 版本後發現,OpenSSL 1.0.2k-fips 只支持到 TLS 1.2,但目標 API Server 僅允許 TLS 1.3。這就導致了協議不匹配,從而引發了錯誤。
OpenSSL 1.0.2k-fips 支援的 SSL/TLS 協議:
因為 OpenSSL 1.0.2 不支持 TLS 1.3,而 API Server 僅允許 TLS 1.3,導致 SSL/TLS 協議不兼容。
解決方案
1. 升級主機的 SSL/TLS 支援
若 API Server 僅支援 TLS 1.3,主機必須升級至支援 TLS 1.3 的 OpenSSL 版本(至少為 OpenSSL 1.1.1)。這樣可以確保 WordPress 主機與 API Server 之間的 SSL/TLS 協議匹配。
2. 讓 API Server 向下兼容 TLS 1.2
如果 API Server 能夠向下兼容 TLS 1.2,則可以暫時允許 TLS 1.2 通訊,以解決當前的不兼容問題。儘管 TLS 1.3 更加安全,但在過渡期間允許使用 TLS 1.2,可以確保現有系統正常運行。
實作過程
在我的情況下,由於主機當前無法即時升級至支援 TLS 1.3 的 OpenSSL,我選擇了讓 API Server 向下兼容 TLS 1.2 的方案。這樣系統可以恢復運作,並且在未來 OpenSSL 升級至支援 TLS 1.3 時,再切換至僅支持 TLS 1.3 的模式。
在 Plesk 中,可以使用以下命令來啟用 TLS 1.2 和 TLS 1.3:
# plesk bin server_pref -u -ssl-protocols 'TLSv1.2 TLSv1.3'執行此命令後,請重啟相關服務(如 Apache、Nginx、PHP-FPM)以應用更改。
這樣可以臨時解決協議不兼容的問題。
檢測工具
當不確定目標主機支援哪些 TLS 協議版本時,可以使用 SSL Labs 工具來檢查目標主機的 TLS 支援情況。該工具可以幫助你確定目標主機的協議支援,從而避免不兼容問題的發生。
參考資料
https://www.plesk.com/kb/support/how-to-enable-disable-tls-protocol-versions-in-plesk-for-linux/
https://talk.plesk.com/threads/best-practice-for-upgrading-openssl-on-centos-7-9-obsidian-v18-0-54.371042/
https://www.isres.com/jingyan2/79.html
https://blog.csdn.net/weixin_46858088/article/details/135718447
[……]
hide protected by reCAPTCHA v3
安裝 reCAPTCHA v3 之後,頁面右下角就會多出隱私權圖標這東西,在某些場合可能需要把它隱藏起來,可以透過下面方式隱藏
下方兩段CSS都可以隱藏 reCAPTCHA v3 圖示
注意:請不要使用 display: none 這可能會使reCAPTCHA v3失去作用
https://wordpress.org/support/topic/how-do-i-hide-recaptcha-v3-badge/
https://wordpress.org/support/topic/recaptcha-v3-badge-is-displayed-on-all-pages-not-only-form-pages/
[……]
PHP 呼叫 Namespace 文件中的 function
呼叫 Namespace 文件裡的 function
/**
* https://vector.cool
*/
Namespace VECTOR\COOL;
function test() {
echo "Hello world!\n";
}
VECTOR\COOL\test();呼叫 Namespace 文件裡 class 中的 function
/**
* https://vector.cool
*/
namespace VECTOR\COOL;
class HELLO{
static public function test() {
echo "Hello world!\n";
}
}
VECTOR\COOL\HELLO::test();在 WordPress Action 中呼叫
<?php
/**
* https://vector.cool
*/
Namespace VECTOR\COOL;
function test() {
echo "Hello world!\n";
}
add_action('init','VECTOR\COOL\test');參考資料:
http://php.net/manual/en/language.namespaces.nsconstants.php[……]
PHP Namespace 錯誤 Warning call_user_func_array() expects parameter 1 to be a valid callback
使用 __NAMESPACE__ 取得當前文件的 Namespace
呼叫 Namespace 裡的 function
/**
* https://vector.cool
*/
Namespace VECTOR\COOL;
function test() {
echo "Hello world!\n";
}
call_user_func(__NAMESPACE__ .'\test');呼叫 Namespace 裡的 class 中的 function
/**
* https://vector.cool
*/
Namespace VECTOR\COOL;
class Hello {
static public function test() {
echo "Hello world!\n";
}
}
call_user_func(__NAMESPACE__ .'\Hello::test'); // String
call_user_func(array(__NAMESPACE__ .'\Hello', 'test')); // Array在 WordPress Action 中呼叫
/**
* https://vector.cool
*/
Namespace V123\PLUGIN\CFU;
add_action('init',__NAMESPACE__.'\create_initial_admin_menu');參考資料:
http://php.net/manual/en/language.namespaces.nsconstants.php
https://stackoverflow.com/questions/14682356/relative-namespaces-and-call-user-func[……]
WordPress SEO 換網址後一定要做的3件事
轉至:V123 DEV – WordPress 中文開發團隊
可能因為某些原因,會需要更換WP網址,但之前寫的文章SEO好不容易做起來,大部分的頁面搜尋引擎也都收錄了,這樣不是太浪費了,SEO的部分等於一切重來,雖然換網址真的對SEO很傷,但沒辦法的時候我們只能將傷害降到最低。
第一步、設定固定網址
下圖,新網站的”固定網址“設置,
設定WordPress固定網址,請務必確定與舊網站設置相同 – V123 DEV
第二步、設定轉址
做完第一步,再來就是要將舊網域的網址轉至新網域的網址,但參數不變,讓每一篇文章都可以搬家到新網址
http://old-domain.com/example/
轉到
http://new-domain.com/example/
設定舊站根目錄下的 .htaccess 檔,把所有原有的值都刪了,添加下面兩行
所有網址就順利的重定向到新網址
第三步、設定Google Search Console 變更網址
如果您已經確定完成上述兩步驟,再來
當然是要通知Google大神,拜拜碼頭,說我要換網址了
登入Google帳戶,進入Google Search Console,先新增新網站網址,並通過驗證,至於怎麼新增網址到 Google Search Console 請Google一下,很簡單,這邊不多贅述。
新增完成後在右上角下拉選單選擇舊網站網址,按一下右側的齒輪icon設定,選擇變更網址選項 – V123 DEV
將會一步一步地確認,最後提交申請 – V123 DEV參考資料:
https://v123.tw/wordpress-seo-%E6%8F%9B%E7%B6%B2%E5%9D%80%E5%BE%8C%E4%B8%80%E5%AE%9A%E8%A6%81%E5%81%9A%E7%9A%843%E4%BB%B6%E4%BA%8B/[……]
解決 WordPress 無法使用 jQuery 問題
設計WordPress主題或插件開發時,常會需要使用jQuery,WordPress其實很貼心的已經載入jQuery,但實際使用時發現,原本可以跑的jQuery程式,放進WordPress卻不能跑了,才知道原來WordPress的jQuery要這樣寫。
WordPress 頁面中,確實看到 jQuery 已載入
<script type='text/javascript' src='https://yourdomain.com/wp-includes/js/jquery/jquery.js?ver=1.11.1'></script> <script type='text/javascript' src='https://yourdomain.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
頁面中加入一段測試碼
<script>
$( document ).ready(function() {
alert("hello");
});
</script>理論上應該是會順利看到 hello 對話框,但是沒有
解決方法:
主要是jQuery寫法的問題,選擇器不能使用習慣的簡碼 $ 符號,而要用下面這兩種寫法,
順利看到hello 對話框
jQuery( document ).ready( function( $ ) {
alert("hello");
} );( function( $ ){
alert("hello");
} )( jQuery );本文出自:https://v123.tw
[……]