Woocommerce перехватывает использование в не-php-файле - PullRequest
0 голосов
/ 13 сентября 2018

Я работаю над интегрированной установкой 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 Ответ

0 голосов
/ 13 сентября 2018

Вы не можете получить доступ к любой функции или классу, если не загрузите 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 по следующей ссылке:

Ссылка

...