• Добрый день.

    Есть сайт — копия нормально работающего сайта. На странице товара и каталога не выводятся свойства товара: вылезает ошибка «Notice: Функция price вызвана неправильно. Свойства товара не должны быть доступны непосредственно».
    По совету из гугля конструкция $product->price была заменена на $product->price(). Стало хуже: появилась ошибка «Fatal error: Uncaught Error: Call to undefined method WC_Product_Simple::price()». Разницу между исходным сайтом и копией найти не удалось, но на исходном нет таких глюков.
    Попытка вытащить свойства товара с помощью get_attributes не помогла — приходит пустой массив.

    Подскажите, чем лечатся такие ошибки и как вытащить нужные свойства в таких условиях? Спасибо.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Такие ошибки скорее всего следствие необновлений или кривых обновлений вукоммерса и темы сайта. У вас советы из гугла могут относиться не к вашим версиям вукоммерса и, отдельно, шаблона в теме, который выводит цену. Notice вообще значения не имеет, такие сообщения не должны выводиться на экран, отключить надо их

    Notice включены для отладки — чтобы выяснить, почему не выводятся свойства. Вукоммерс свежий, обновили как раз в процессе поиска ошибки. А тема… вот тут трудно сказать, тут надо копать везде, и хотелось бы сузить круг поиска.

    Но: проблема наблюдается не только с ценами, а с любыми свойствами товара. Например, «echo $product->short_description» работает на старом сайте и не работает на новом. Исследование $product показывает, что все его данные числятся защищёнными. Можно бы предположить, что дело в этом, но на исходном они выглядят так же, а проблемы нет. Если там в функциях и есть какое-то расширение, найти его пока не удалось.

    была заменена на $product->price(). Стало хуже:

    Помнится, функция (метод) все-таки не price(), а get_price(). Проверьте по документации.

    «echo $product->short_description» работает на старом сайте и не работает на новом.

    Обновите старый сайт — и там будут такие же проблемы.

    Точно не помню с какой именно версии, но помнится, с 3.какой-то, авторы WC решили, что нужно использовать методы (функции), а не свойства. То есть $product->get_short_description() вместо $product->short_description. Мне из-за этой «мелочи» в свое время пришлось кучу плагинов переделывать.

    Повторюсь, у вас вукоммерс может и свежий… А файлы его шаблона, лежащие в теме в папке woocommerce — они точно старые. И возможные допилы магазина, лежащие в теме или плагинах — тоже старой версии

    Автор greatebattle

    (@greatebattle)

    @Yuri — точно, это именно оно и есть. 🙂 Спасибо.
    Перед тем, как писать сюда вопрос, я как раз пыталась искать мануал по обновлениям WC, но смогла найти только с помощью подсказанных вами функций. (Увы, чтобы составить правильный запрос, надо знать половину ответа.)

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Ошибка при выводе свойств товара» закрыта для новых ответов.