【问题标题】:How Can I Properly Use WooCommerce Subscriptions API in PHP?如何在 PHP 中正确使用 WooCommerce 订阅 API?
【发布时间】:2014-11-29 09:19:53
【问题描述】:

文档非常稀缺。我正在尝试创建一些使用 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 woocommerce-subscriptions


【解决方案1】:

这不是在外部代码中包含 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";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2020-03-27
      • 1970-01-01
      相关资源
      最近更新 更多