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 по следующей ссылке:

Ссылка

Другие вопросы по тегам