通过 AJAX 调用任何 Wordpress PHP 函数

Ale*_*rdo 3 php ajax wordpress

因为我只能找到复杂的例子,所以我很难学习 AJAX 的基础知识。事实上,我想做一件看似简单的事情,但我找不到任何简单的解决方案。有很多说明如何使用 AJAX 来检查各种表单等。但是关于这项技术如何在 WordPress 中工作的数据很少。

官方说明对我也没用:https : //codex.wordpress.org/AJAX_in_Plugins

我究竟需要什么?

例如,我在functions.php 中有一些函数。让它成为一个简单的字符串:

<?php 

function do_echo() {

echo "Hello";

}
Run Code Online (Sandbox Code Playgroud)

现在,我想在我的帖子中创建一个按钮并使用 AJAX 调用 do_echo()。

<button class="my_button" type="button" role="button">Click Me</button>
Run Code Online (Sandbox Code Playgroud)

所以,我想做的第一件事就是按下按钮并得到“你好,世界!” 显示。

当然,实际上,我需要执行更复杂的功能。但是,首先,我需要做这些简单的事情。

我意识到我需要使用 jQuery 做这样的事情

$.ajax({
url: '/path/to/file',
type: 'default GET (Other values: POST)',
dataType: 'default: Intelligent Guess (Other values: xml, json, script, 
or html)',
data: {param1: 'value1'},
})
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
Run Code Online (Sandbox Code Playgroud)

我知道我需要在 PHP 中做这样的事情

add_action('wp_ajax_(action)', 'my_action_callback');
add_action('wp_ajax_nopriv_(action)', 'my_action_callback');
Run Code Online (Sandbox Code Playgroud)

但我无法理解将这些东西附加到 WordPress 需要执行哪些确切步骤。

任何人都可以帮助我了解如何在单击按钮时使用 AJAX从WordPress 中的functions.php 调用任何 PHP 函数的简单说明吗?

先感谢您。

Elv*_*aci 8

好的,让我们为此编写一个简化的示例。

这是functions.php的示例:

add_action('wp_ajax_nopriv_sayhello', 'say_hello_function');
add_action('wp_ajax_sayhello', 'say_hello_function');
function say_hello_function(){
echo 'hello';
exit();
}
Run Code Online (Sandbox Code Playgroud)

这是前端部分:

<button class="my_button" type="button" role="button">Click Me</button>

<script>
jQuery(".my_button").click(function(){

jQuery.get(ajaxurl,{'action': 'sayhello'}, 
function (msg) { alert(msg);});

});

</script>
Run Code Online (Sandbox Code Playgroud)

更新:

要在您的网站内容中显示返回的数据:

   <script>
    jQuery(".my_button").click(function(){  
    jQuery.get(ajaxurl,{'action': 'sayhello'}, 
    function (msg) { jQuery(".result_area").html(msg);});
    });
   </script>
Run Code Online (Sandbox Code Playgroud)

要使上述代码正常工作,您需要有一个带有“result_area”类的 div。

<div class="result_area"></div> 
Run Code Online (Sandbox Code Playgroud)