如何在PHP中正确使用WooCommerce订阅API?

问题描述 投票:4回答:2

文档非常稀缺。我正在尝试创建一些使用WooCommerce订阅(WooCommerce的插件)API的代码,以获取订阅列表以及每个订阅的所有详细信息。那里的文档和示例太稀少了,我无法正确理解。以下代码未产生任何错误,但未输出任何订阅(仅空白页面)。如何列出所有订阅的所有详细信息?

<?php

if(isset($_REQUEST['Action']))
{
    $Action = $_REQUEST['Action'];
    switch($Action)
    {
        case "ValidateSubscription":
            chdir("../wp-content/plugins/woocommerce-subscriptions/classes");
            include '../../woocommerce/woocommerce.php';
            //include '../woo-includes/woo-functions.php';
            //include '../woo-includes/class-wc-dependencies.php';
            include 'class-wc-subscriptions-manager.php';

            $Subscriptions = WC_Subscriptions_Manager::get_all_users_subscriptions();
            print_r($Subscriptions);
            break;
        default:
            echo "invalid action";
    }
}else
{
    echo "no action specified";
}
php wordpress woocommerce subscription wc-subscriptions
2个回答
4
投票

这不是将WordPress函数包含在外部代码中的方式。试试这个。

if(isset($_REQUEST['Action']))
{
    $Action = $_REQUEST['Action'];
    switch($Action)
    {
        case "ValidateSubscription":

            include('../wp-load.php'); //Guessing this path based on your code sample... should be wp root

            $Subscriptions = WC_Subscriptions_Manager::get_all_users_subscriptions();
            print_r($Subscriptions);
            break;
        default:
            echo "invalid action";
    }
}else
{
    echo "no action specified";
}

2
投票

[带@ChuckMac的答案,我认为可以通过尊重WordPress的Plugin API并了解WordPress的各个部分在何时启动并运行来进一步完善。几乎所有的WP都是通过init挂钩加载的,因此这是运行“监听” $_REQUEST变量的函数的安全场所。根据您的最终用例,您也许可以摆脱plugins_loaded

add_action( 'init', 'so_26193801_event_listener' );

function so_26193801_event_listener(){

    if(isset($_REQUEST['Action'])){
        $Action = $_REQUEST['Action'];
        switch($Action){
            case "ValidateSubscription":

                $Subscriptions = WC_Subscriptions_Manager::get_all_users_subscriptions();
                print_r($Subscriptions);
                break;
            default:
                echo "invalid action";
        } 
    } else {
        echo "no action specified";
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.