2017-09-13 13 views
0

私はwoocommerceをインストールしていて、自分のサイトからログアウトしたときに、ホームのwoocommerceがこの問題を引き起こします。私のwp-config.phpはtrueになっています。しかし、私は、そのファイルの

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ためのフィルタフックがあります。したがって、この関数はnavメニューをフィルタリングするために使用され、ユーザーがログインしていないときに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をチェックすることは、どちらかの特別な何もしないことが明らかになりました。だからここに提示されているものに基づいて、私の提案です:

  • ワードプレスは、最新のあなたは多分、互換性のない実行されているWooCommerceのバージョンであることを確認してください。
  • wp_nav_menu_objectsをフィルタするコードがある場合は、$items配列にstdClassのインスタンスが含まれなくなるように変更するバグを導入していないことを確認してください。
  • WooCommerce以外のサードパーティのプラグインを無効にする/有効にすることをお試しください。期限が切れていたり、盗まれている場合は、そのいずれかを見つけることができます。

運が良かった!

甲田

関連する問題