2017-09-13 78 views
0

當我安裝woocommerce並從我的網站註銷然後在主頁woocommerce導致此問題。我的wp-config.php被轉換爲真,這就是爲什麼它顯示此錯誤。但我需要知道發生了什麼

Notice: Undefined property: stdClass::$url in /home/......./wp-content/plugins/woocommerce/includes/wc-page-functions.php on line 123 

回答

0

行文件123是下面這段代碼中:在最後一行

function wc_nav_menu_items($items) { 
    if (! is_user_logged_in()) { 
     $customer_logout = get_option('woocommerce_logout_endpoint', 'customer-logout'); 

     if (! empty($customer_logout)) { 
      foreach ($items as $key => $item) { 
       $path = parse_url($item->url, PHP_URL_PATH); 
       $query = parse_url($item->url, PHP_URL_QUERY); 
       if (strstr($path, $customer_logout) || strstr($query, $customer_logout)) { 
        unset($items[ $key ]); 
       } 
      } 
     } 
    } 

    return $items; 
} 
add_filter('wp_nav_menu_objects', 'wc_nav_menu_items', 10); 

注意有一個過濾器鉤wp_nav_menu_objects。因此,此功能用於過濾導航菜單,並且具體看起來就像它在那裏,以便WooCommerce可以在用戶未登錄時隱藏註銷菜單對象。

現在爲什麼會引發錯誤。我相信它可以回到wordpress鉤子wp_nav_menu_objects。當再次查看函數時,它看起來像名爲$items的參數被期望是一個stdClass實例的鍵控數組,但是在第123行中,PHP發現url屬性不可用。這導致我相信在此之前發生的另一個過濾器不正確地修改$items數組,以便此過濾器無法正確讀取該屬性。

進一步展望上線185文件WC-頁的functions.php中還有另外一個鉤子此過濾器:

add_filter('wp_nav_menu_objects', 'wc_nav_menu_item_classes', 2); 

但是檢查wc_nav_menu_item_classes表明,它不會做什麼特別的要麼。所以這裏是我的建議基於什麼已經提出:

  • 確保WordPress是最新的,您正在運行的WooCommerce的版本可能不兼容。
  • 如果您的代碼可以過濾wp_nav_menu_objects,請確保您沒有引入將$items數組更改爲不再包含stdClass實例的錯誤。
  • 嘗試禁用/啓用不屬於WooCommerce的第三方插件,您可能會發現其中一個插件過期或只是被竊聽。

祝你好運!

Koda