0

我正在研究 woocommerce 集成的 wordpress 安装。

我创建了一个独立的“SearchByNumber.php”文件并将其放入路径:/wp-content/plugins/ajax-test

通常它不是一个真正的插件(我不熟悉编写插件)。它正在卷曲 Web 服务并在 xml 中获取结果。

我想做的是从这个 xml 循环 SKU,并从 woocommerce 获取它们的 ID、价格、库存等。

我尝试了很多,但每次我得到不同的错误:找不到类,找不到方法,空对象等。

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 找到产品的 ID,然后从产品中获取我想要的任何东西。

PS:我$product->get_sku() $product->get_attribute('Brand')在产品页面的 php 片段中使用这些。他们在那里工作得很好。

如何挂钩、过滤、分类??我究竟做错了什么?

我将不胜感激您的任何帮助。

非常感谢,

穆拉特

4

1 回答 1

2

除非您加载 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 插件参考:

参考

于 2018-09-13T14:49:11.150 回答