我一直在為網站編寫一些自定義插件,我想知道与$ wpdb互動的正確方法。 我的插件使用全域性$ wpdb連線執行一些查詢。 我註意到一个$ wpdb->close(); 方法已添加到wordPress,以關闭資料庫連線物件。
我的問题是:插件應该在執行查詢後關闭連線吗?
我已在一些著名插件(如等級數學,yoast)的檔案夹中进行搜尋.他们经常使用$ wpdb,但在他们的代碼中找不到$ wpdb->close().我的意思是在功能結束時,他们不会關闭查詢。
例如,我一直在編寫一个用於計算上週帖子數的函式
function get_posts_count_from_last_week($post_type = 'post')
{
global $wpdb;
$numposts = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) " . "FROM " . $wpdb->posts . " WHERE post_status='publish' AND post_type= %s AND post_date> %s", $post_type, date('Y-m-d H:i:s', strtotime('-168 hours'))));
return $numposts;
}
我得到很多
所以我必须把
“WordPress database error Commands out of sync; you can’t run this command now for query SELECT”
返迴之前,之後我没有得到
$wpdb->close();
完全没有。
我很困惑,為什麼当其他插件不這樣做時我必须關闭連線!
順便說一句,在我的主题中,我對
Commands out of sync
有一些功能
但是,再次没有任何
global $wpdb
關闭。
$wpdb->close()
最新回復
- 6月前1 #
相似問題
- wordpress:為什麼更新和删除查詢在自定義表中不起作用?wordpresswpquerywordpressdatabasewordpressmysql2020-12-19 19:26
- wordpress:分類中是否有明確的術語,用於特定的职位ID?wordpressdatabasewordpresstaxonomywordpresstermswordpresswpdbwordpresssql2020-07-02 05:24
- wordpress:想要仅過濾管理區域中的父帖子wordpresscustomposttypeswordpresswpquerywordpresscustomtaxonomywordpressfilterswordpresswpdb2020-06-20 22:27
- wordpress:為什麼查詢返迴空陣列?wordpresspostswordpresswpquerywordpressquerywordpresswpdbwordpresstable2020-06-13 05:24
- wordpress:postmeta表中的" BS_"行wordpressdatabasewordpresspostmetawordpressmysqlwordpresswpdb2020-06-11 19:26
close()
功能已添加,以確保資料庫抽象的完整性.如果在插件或主题中(使用時)過早關闭了資料庫,則下次呼叫wpdb::query()
將重新打開連線。您的
Commands out of sync
錯誤是MySQL錯誤,而不是wordPress錯誤,它可能来自您正在使用的插件或主题.搜尋wordpress database commands out of sync
提出了很多可能的問题,包括快取插件.尝試禁用所有插件並切換到預設主题(例如Twenty Twenty); 如果問题消失了,請重新打開插件,直到找到罪魁祸首.然後聯系该插件的支援人員。