首頁>Web>source

我一直在為網站編寫一些自定義插件,我想知道与$ 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 #

    close() 功能已添加,以確保資料庫抽象的完整性.如果在插件或主题中(使用時)過早關闭了資料庫,則下次呼叫 wpdb::query() 將重新打開連線。

    您的 Commands out of sync 錯誤是MySQL錯誤,而不是wordPress錯誤,它可能来自您正在使用的插件或主题.搜尋 wordpress database commands out of sync 提出了很多可能的問题,包括快取插件.尝試禁用所有插件並切換到預設主题(例如Twenty Twenty); 如果問题消失了,請重新打開插件,直到找到罪魁祸首.然後聯系该插件的支援人員。

  • wordpress:如何获取wordPress中存档頁面的最新發佈時間?
  • wordpress:如何在wordpress後端發送Ajax請求