1. 程式人生 > >Wordpress PHP Fatal error: Call to a member function get() on a non-object 解決方法

Wordpress PHP Fatal error: Call to a member function get() on a non-object 解決方法

Wordpress PHP Fatal error:  Call to a member function get() on a non-object解決方法

在自己程式碼的方法仲使用 require(ABSPATH.'wp-load.php'); 引入Wordpress核心程式碼,然後執行WP_Query獲取特定的post,就會發生下面的錯誤:

PHP Fatal error:  Call to a member function get() on a non-object in /sitepath/wp-includes/query.php on line 28

這是因為全域性變數不正確使用引起的問題,預設 $wp_query
是在 wp-setting.php 中定義的,因為定義在最外層,所以 $wp_query自然是一個全域性變數。

但在自己的方法中通過 require(ABSPATH.'wp-load.php'); 引入Wordpress核心程式碼,反而使$wp_query變成了這個方法的本地變數。所以其他程式碼呼叫 $wp_query 時就會出錯。

解決方法:

在require(ABSPATH.'wp-load.php'); 前面加入以下程式碼,預先將 $wp_query 定義為全域性變數

define('WP_USE_THEMES', false);
global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header;