在自己代碼的函數中使用 require(BASE_PATH . ‘wp-load.php’); 引入 WordPress 核心代碼,然後執行 WP_Query 獲取特定的日志,然後就發生下面的錯誤:
Fatal error: Call to a member function get() on a non-object in [path to site]\site\wp-includes\query.php on line 27
這是因為全局變量不正確使用引起的問題,默認 $wp_query 是在 wp-setting.php 中定義的,因為是定義在最外層,所以 $wp_query 自然就是一個全局的變量。但是這裡在自己的函數中通過 require(BASE_PATH . ‘wp-load.php’); 引入 WordPress 核心代碼,$wp_query 反而變成這個函數中的本地變量,所以其他代碼調用 $wp_query 的時候,就發生了錯誤。
解決方法是:在 require(BASE_PATH . ‘wp-load.php’); 代碼上面加入以下代碼,預先將 $wp_query 定義為全局變量:
define('WP_USE_THEMES', false); global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header;