Я работаю над интегрированной установкой WordPress для woocommerce.
Я создал отдельный файл SearchByNumber.php и поместил его по пути: / wp-content / plugins / ajax-test
Обычно это не настоящий плагин (я не знаком с написанием плагинов). Это cURLing веб-сервис и получение результатов в xml.
Что я хочу сделать, так это зациклить SKU из этого xml и получить их идентификаторы, цены, акции и т. д. Из woocommerce.
Я много пробовал, но каждый раз получаю разные ошибки: класс не найден, метод не найден, нулевой объект и т. д.
global $product;
// a lot codes curling, looping, etc...
$product_id = $product->get_product_id_by_sku($sku_from_xml);
$product = wc_get_product($product_id);
$sku = $product->get_sku();
// or
$price = $product->get_price();
Я пытаюсь найти идентификатор продукта по артикулу, а затем получить от продукта все, что захочу.
PS: Я использую эти $product->get_sku()
$product->get_attribute('Brand')
в фрагментах php на страницах продуктов. Они там хорошо работают.
как зацепить, отфильтровать, класс ?? Что я делаю неправильно?
Буду признателен за любую помощь.
Большое спасибо,
Мурат
Вы не можете получить доступ к какой-либо функции или классу, если не загрузите Wordpress.
поэтому, если вы хотите загрузить Wordpress из автономного скрипта, вам необходимо сделать следующее:
<?php
require '../../../wp-load.php'; //Load WordPress
$product_id = wc_get_product_id_by_sku( 'test' ); //get the product id
if ( $product_id ) {
$product = wc_get_product( $product_id ); //get the product
$price = $product->get_price(); //get the price
echo $price;
}
но я настоятельно рекомендую загрузить ваш скрипт как плагин для большей безопасности, и для этого сначала просто переименуйте файл, чтобы он соответствовал стандарту Wordpress, например, ajax-test.php
, а затем добавьте следующий пример кода в свой скрипт
<?php
/*
Plugin Name: Ajax Test
*/
defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); //Security Check block direct access to your plugin PHP files
add_action( 'init', 'function_name' );
function function_name() {
$product_id = wc_get_product_id_by_sku( 'test' ); //get the product id
if ( $product_id ) {
$product = wc_get_product( $product_id ); //get the product
$price = $product->get_price(); //get the price
echo $price;
}
}
затем перейдите к бэкэнду Wordpress и активируйте плагин.
в обоих случаях теперь у вас есть доступ ко всем хукам WordPress и Woocommerce
вы можете проверить ссылку на плагин WordPress по следующей ссылке:
@Murat, вы можете перейти по ссылке выше, чтобы создать свой собственный плагин, и есть множество обучающих видео, которые шаг за шагом помогут вам
хорошо @kashalo, спасибо большое. Я уже принял твой ответ. Кстати, это правильный способ вызвать wp-load require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
? Что это должно быть: require
или require_once
?
@Murat в обоих направлениях будет работать для вас, вы можете использовать require_once
, если вам будет удобнее
Привет @kashalo, большое спасибо за вашу помощь.
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
у меня работал. Но я бы предпочел ваш второй совет, если вы так говорите. Мой файл "SearchByNumber.php" принимает опубликованный параметр с другой страницы WordPress, а затем ищет этот опубликованный параметр. На данный момент в нем около 300 строк, и их количество растет. Есть много if / else, foreach и т. д. Это немного сложно. Как превратить его в плагин?