Woocommerce перехватывает использование в не-php-файле
Я работаю над интегрированной установкой WordPress WooCommerce.
Я создал отдельный файл "SearchByNumber.php" и поместил его в путь: /wp-content/plugins/ajax-test
Обычно это не настоящий плагин (я не знаком с написанием плагина). Он отбирает веб-сервис и получает результаты в формате 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();
Я пытаюсь найти идентификатор продукта через SKU, а затем получить из него все, что захочу.
PS: я использую эти $product->get_sku()
$product->get_attribute('Brand')
во фрагментах php на страницах продукта. Они хорошо работают там.
как зацепить, отфильтровать, класс?? Что я делаю неправильно?
Буду признателен за любую помощь.
Большое спасибо,
Мурат
1 ответ
Вы не можете получить доступ ни к какой функции или классу, пока не загрузите 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 Standard 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 по следующей ссылке: