Добрый день.
Вопрос прост и понятен, но ответа на него, опять же, не нашел.
В WooCommerce есть свои классы, как их подключить и вызвать их методы вне WooCommerce.
Например в WC_Widget есть get_cached_widget (...) . А как его вызвать вне WC ?
В общем, задача такая. Нужно создать виджет для отображения товаров. Он то там уже есть, но нужно просто выборочно по id товары отображать. Модифицировать код WooCommerce нельзя (это заказчика условие, не знаю, почему), значит нужно писать отдельно плагин. И вот в этом плагине, что бы фактически не дублировать половину кода WC заново, я хочу просто вызвать методы классов WC. Или же тут без вмешательства в ядро никак?Добрый день. Не совсем ясно что именно вам нужно.
Применить классы из woocommerce к каким-то другим элементам?
В общем, задача такая. Нужно создать виджет для отображения товаров. Он то там уже есть, но нужно просто выборочно по id товары отображать. Модифицировать код WooCommerce нельзя (это заказчика условие, не знаю, почему), значит нужно писать отдельно плагин. И вот в этом плагине, что бы фактически не дублировать половину кода WC заново, я хочу просто вызвать методы классов WC. Или же тут без вмешательства в ядро никак?
Да будь все так просто, оказался бы я тогда здесь...?)
В целом, даже без 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 а класс виджета, то оно не работает.Читали здесь? Или не помогло?
Когда всё таки найдете решение, поделитесь. Интересно будет ознакомиться.
Если вдруг, что-нибудь придет в голову, отпишусь.
В моем случае там была ошибка в классе и методе его вызова. Поскольку, я использую методы и функции непосредственно WooCommerce, то и классы у них соответственно WC. Вызываются они через $this-> и это работает. Но, если в $this-> прилетает не название метода класса WC а класс виджета, то оно не работает.
В общем, после небольших разборок и ковыряний (но все же без танца с бубном) ) все успешно заработало.
По поводу подключения WC и создания виджетов, то я подключил класс при помощи: require_once (dirname(__FILE__) . '/../woocommerce/includes/abstracts/abstract-wc-widget.php');
Затем создал виджет уже не через WP_Widget а WC_Widget и смог более-менее нормально использовать средства WooCommerce. Но некоторые функции все равно нужно дописывать вручную либо же изменять под собственные нужды. Тут уж ничего не поделаешь, думаю, это вполне нормально.
Не знаю, решение это, или нет, но вот такая вот инфа)
Теперь возникла проблема в сортировке вывода товаров непосредственно для отображения. Буду искать по этой теме что тут на форуме или дальше в инете. Если коротко, то проблема в следующем - запросом дергается один порядок ID товаров, и в дальнейшем по коду он в этом порядке движется, но при самом отображении порядок меняется. Пока не разобрался в чем прикол или ошибка.