文档非常稀缺。我正在尝试创建一些使用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";
}
这不是将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";
}
[带@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";
}
}