• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Подключение классов WC

Менестрель

Новичок
Добрый день.
Вопрос прост и понятен, но ответа на него, опять же, не нашел.
В WooCommerce есть свои классы, как их подключить и вызвать их методы вне WooCommerce.
Например в WC_Widget есть get_cached_widget (...) . А как его вызвать вне WC ?
 

qwer

Специалист
Местный
Добрый день.
Вопрос прост и понятен, но ответа на него, опять же, не нашел.
В WooCommerce есть свои классы, как их подключить и вызвать их методы вне WooCommerce.
Например в WC_Widget есть get_cached_widget (...) . А как его вызвать вне WC ?

Добрый день. Не совсем ясно что именно вам нужно.
Применить классы из woocommerce к каким-то другим элементам?
 

Менестрель

Новичок
Добрый день. Не совсем ясно что именно вам нужно.
Применить классы из woocommerce к каким-то другим элементам?
В общем, задача такая. Нужно создать виджет для отображения товаров. Он то там уже есть, но нужно просто выборочно по id товары отображать. Модифицировать код WooCommerce нельзя (это заказчика условие, не знаю, почему), значит нужно писать отдельно плагин. И вот в этом плагине, что бы фактически не дублировать половину кода WC заново, я хочу просто вызвать методы классов WC. Или же тут без вмешательства в ядро никак?
 

qwer

Специалист
Местный
В общем, задача такая. Нужно создать виджет для отображения товаров. Он то там уже есть, но нужно просто выборочно по id товары отображать. Модифицировать код WooCommerce нельзя (это заказчика условие, не знаю, почему), значит нужно писать отдельно плагин. И вот в этом плагине, что бы фактически не дублировать половину кода WC заново, я хочу просто вызвать методы классов WC. Или же тут без вмешательства в ядро никак?

Какая-то похожая темка от вас уже встречалась.
Немного странное пожелание от заказчика, ну ничего, бывает.
Во всяком случае можете вызывать функции с помощью require ну или include в своём файле.
Главное же чтобы грамотно было.

Надеюсь, смогла помочь.
 

Менестрель

Новичок
Да будь все так просто, оказался бы я тогда здесь...?)
В целом, даже без require или include иногда можно вызвать. Вопрос в другом. После вызова WC_Widget_Products::get_cached_widget( $args ) выдает следующую ошибку:
Fatal error: Uncaught Error: Using $this when not in object context in C:\OpenServer\domains\...\wp-content\plugins\woocommerce\includes\abstracts\abstract-wc-widget.php:73

И там еще десяток фалов примерно дальше идут.

Но все равно спасибо за помощь. Буду дальше пытаться.
 

qwer

Специалист
Местный
Да будь все так просто, оказался бы я тогда здесь...?)
В целом, даже без require или include иногда можно вызвать. Вопрос в другом. После вызова WC_Widget_Products::get_cached_widget( $args ) выдает следующую ошибку:
Fatal error: Uncaught Error: Using $this when not in object context in C:\OpenServer\domains\...\wp-content\plugins\woocommerce\includes\abstracts\abstract-wc-widget.php:73

И там еще десяток фалов примерно дальше идут.

Но все равно спасибо за помощь. Буду дальше пытаться.

Читали здесь? Или не помогло?

Когда всё таки найдете решение, поделитесь. Интересно будет ознакомиться.

Если вдруг, что-нибудь придет в голову, отпишусь.
 

Менестрель

Новичок
Читали здесь? Или не помогло?

Когда всё таки найдете решение, поделитесь. Интересно будет ознакомиться.

Если вдруг, что-нибудь придет в голову, отпишусь.
В моем случае там была ошибка в классе и методе его вызова. Поскольку, я использую методы и функции непосредственно WooCommerce, то и классы у них соответственно WC. Вызываются они через $this-> и это работает. Но, если в $this-> прилетает не название метода класса WC а класс виджета, то оно не работает.

В общем, после небольших разборок и ковыряний (но все же без танца с бубном) ) все успешно заработало.
По поводу подключения WC и создания виджетов, то я подключил класс при помощи: require_once (dirname(__FILE__) . '/../woocommerce/includes/abstracts/abstract-wc-widget.php');

Затем создал виджет уже не через WP_Widget а WC_Widget и смог более-менее нормально использовать средства WooCommerce. Но некоторые функции все равно нужно дописывать вручную либо же изменять под собственные нужды. Тут уж ничего не поделаешь, думаю, это вполне нормально.

Не знаю, решение это, или нет, но вот такая вот инфа)
Теперь возникла проблема в сортировке вывода товаров непосредственно для отображения. Буду искать по этой теме что тут на форуме или дальше в инете. Если коротко, то проблема в следующем - запросом дергается один порядок ID товаров, и в дальнейшем по коду он в этом порядке движется, но при самом отображении порядок меняется. Пока не разобрался в чем прикол или ошибка.
 

qwer

Специалист
Местный
В моем случае там была ошибка в классе и методе его вызова. Поскольку, я использую методы и функции непосредственно WooCommerce, то и классы у них соответственно WC. Вызываются они через $this-> и это работает. Но, если в $this-> прилетает не название метода класса WC а класс виджета, то оно не работает.

В общем, после небольших разборок и ковыряний (но все же без танца с бубном) ) все успешно заработало.
По поводу подключения WC и создания виджетов, то я подключил класс при помощи: require_once (dirname(__FILE__) . '/../woocommerce/includes/abstracts/abstract-wc-widget.php');

Затем создал виджет уже не через WP_Widget а WC_Widget и смог более-менее нормально использовать средства WooCommerce. Но некоторые функции все равно нужно дописывать вручную либо же изменять под собственные нужды. Тут уж ничего не поделаешь, думаю, это вполне нормально.

Не знаю, решение это, или нет, но вот такая вот инфа)

Спасибо, что поделились решением. Получилось, что я почти правильно вам подсказала имею в виду:
Во всяком случае можете вызывать функции с помощью require ну или include в своём файле.
(y)
Теперь возникла проблема в сортировке вывода товаров непосредственно для отображения. Буду искать по этой теме что тут на форуме или дальше в инете. Если коротко, то проблема в следующем - запросом дергается один порядок ID товаров, и в дальнейшем по коду он в этом порядке движется, но при самом отображении порядок меняется. Пока не разобрался в чем прикол или ошибка.

С проблемой в сортировке товаров не сталкивалась, поэтому даже не подскажу куда смотреть. Да и мне кажется, нужно больше понимать суть проблемы, чтобы подсказать что-нибудь.
Можете создать новую тему, вдруг кто сталкивался с подобным и сможет помочь.

Во всяком случае, желаю удачи в поиске решения проблемы (если она всё ещё осталась :whistle:)
 
Сверху Снизу