2016-10-05 3 views
0

Я новичок в Wordpress и пытаюсь создать простой вызов, который можно вызвать с страницы ajax. Я знаю, как это сделать с PHP, но я не могу сделать это с помощью Wordpress.Ajax call to wordpress plugin

<?php 
/* 
Plugin Name: Jed Plugin 
*/ 

function func_rate() 
{ 

    $data = wp_remote_retrieve_body (wp_remote_get("https://www.google.com/finance/converter?a=1&from=USD&to=ZAR")); 
    $pos = strpos($data,'class=bld>'); 
    echo substr($data,$pos+10,7); 

} 

add_action('get_value', 'func_rate'); 

Мне нужно создать простой Ajax вызов этому

$.ajax({ 
    url : "https://www.forexforecasts.co.za/wp-content/plugins/test/test.php", 
    type : 'post', 
    data : { 
     action : 'get_value' 
    }, 
    success : function(response) { 
     alert(response) 
    } 
}); 
+0

Вы должны прочитать [** codex **] (https://codex.wordpress.org/AJAX_in_Plugins), Wordpress имеет очень специфические требования и методы при выполнении ajax-запросов к плагинам. – adeneo

ответ

0

EDIT: как adeneo сказал в своем комментарии. Wordpress имеет встроенный в методах handeling Ajax запросы, просто измените свое действие на:

add_action('wp_ajax_get_value', 'func_rate'); //for loged in users 
add_action('wp_ajax_nopriv_get_value', 'func_rate'); //for guests 

И в конце вашего кода в функции func_rate() добавить wp_die(); для предотвращения выполнения WP после выполнения запроса ajax.

И наконец, измените URL-адрес в запросе ajax на ajaxurl. этот var должен быть предопределен WP.

+0

Я вижу, что вы говорите, но мне нужно сделать вызов с внешнего сайта не с сайта WP. Итак, как я могу использовать предопределенный URL-адрес ajax – Jed

+0

Я не тестировал это. но вы можете попробовать выполнить запрос с внешнего сайта на адрес {destenation_domain} /wp_admin/admin-ajax.php. Не забудьте добавить заголовок («Access-Control-Allow-Origin: {source_domain}»); к месту назначения. –