ライン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以外のサードパーティのプラグインを無効にする/有効にすることをお試しください。期限が切れていたり、盗まれている場合は、そのいずれかを見つけることができます。
運が良かった!
甲田