Документация очень скудная. Я пытаюсь создать некоторый код, который использует API подписки WooCommerce (плагин для WooCommerce), чтобы получить список подписок и все детали каждой подписки. Документы и примеры там настолько скудны и слабы, что я не могу понять это правильно. Следующий код не выдает никаких ошибок, но не выводит никаких подписок (только пустая страница). Как я могу перечислить все детали всех подписок?
<?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 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";
}
}