Как вызвать PHP-функции WordPress Custom Plugin из кода Angular JS? Он работает с jQuery.post, но не с $http.post
Я пытаюсь вызвать функцию PHP в моем файле functions.php. Функция PHP выглядит следующим образом:
function add_product_to_cart(){
try {
//some code to add product to woo-commerce cart
echo '{"message": "THIS WAS EXECUTED"}';
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
wp_die();
}
//The following lines are there to enable my function to be called via ajax
add_action( 'wp_ajax_add_product_to_cart', 'add_product_to_cart' );
add_action( 'wp_ajax_nopriv_add_product_to_cart', 'add_product_to_cart' );
Рабочий код jQuery для вызова вышеуказанной функции:
jQuery( document ).ajaxError(function(event, jqxhr, settings, thrownError) {
alert( 'Error: ' + thrownError );
});
jQuery.post( $scope.ajaxUrl,
{'action' : 'add_product_to_cart'}, function( response ){
if ( !response.error ) {
window.location.href='/cart';
} else {
alert ('error: ' + response.error );
}
}, "json" );
Неработающий угловой код:
$http.post($scope.ajaxUrl, { 'action' : 'add_product_to_cart'},
{'content-type':'json'}).then(
function(successResponse){
alert('Success: ' + successResponse);
}, function(errorResponse){
alert('Error: ' + errorResponse);
});
Я думаю, что у меня нет проблем с кодом PHP, так как он вызывается с помощью jQuery. Похоже, что основной проблемой является вызов функции через службу Angular $http.
Ошибка ответа, которую я получаю от WordPress при вызове с использованием $ http, равна 400 (неправильный запрос), а ответ равен 0.
Вот что я получил из кодекса WordPress
Если Ajax-запрос не выполняется в wp-admin / admin-ajax.php, ответ будет -1 или 0, в зависимости от причины сбоя. Кроме того, если запрос выполняется успешно, но действие Ajax не соответствует ловушке WordPress, определенной с помощью add_action('wp_ajax_(action)', ...) или add_action('wp_ajax_nopriv_(action)', ...), то admin- ajax.php ответит 0.