Woocommerce 挂钩非主题 php 文件中的用法

Woocommerce hooks usage in a non-theme php file

我正在安装 woocommerce 集成 wordpress。

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

一般情况下不是真正的插件(我不熟悉写插件)。它正在卷曲 Web 服务并在 xml.

中获取结果

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

我尝试了很多次,但每次都会遇到不同的错误:class 未找到、方法未找到、空对象等

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

如何挂钩,过滤,class ??我做错了什么?

如果你能提供任何帮助,我将不胜感激。

非常感谢,

穆拉特

除非加载 Wordpress,否则无法访问任何功能或 class。

所以如果你想从独立脚本加载 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 挂钩

您可以在以下 link 查看 WordPress 插件参考:

Reference