php – WordPress:如何使用ajax调用调用插件函数?

前端之家收集整理的这篇文章主要介绍了php – WordPress:如何使用ajax调用调用插件函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在写一个wordpress MU插件,它包含每个帖子的链接,当用户点击此链接时,我想使用ajax调用插件函数之一,然后使用该函数输出动态更新链接文本.

我遇到了ajax查询.我有这个复杂的,清楚的黑客,这样做,但它不是很有效.在插件中包含ajax功能的“正确”或“wordpress”方式是什么?

(我当前的hack代码在下面,当我点击生成链接,我没有得到相同的输出,我进入wp页面,当我直接去我的浏览器中的sample-ajax.PHP.)

我有我的代码[1]设置如下:

MU-插件/ sample.PHP

  1. <?PHP
  2. /*
  3. Plugin Name: Sample Plugin
  4. */
  5. if (!class_exists("SamplePlugin")) {
  6. class SamplePlugin {
  7. function SamplePlugin() {}
  8. function addHeaderCode() {
  9. echo '<link type="text/css" rel="stylesheet" href="'.get_bloginfo('wpurl').
  10. '/wp-content/mu-plugins/sample/sample.css" />\n';
  11. wp_enqueue_script('sample-ajax',get_bloginfo('wpurl') .
  12. '/wp-content/mu-plugins/sample/sample-ajax.js.PHP',array('jquery'),'1.0');
  13.  
  14. }
  15. // adds the link to post content.
  16. function addLink($content = '') {
  17. $content .= "<span class='foobar clicked'><a href='#'>click</a></span>";
  18. return $content;
  19. }
  20. function doAjax() { //
  21. echo "<a href='#'>AJAX!</a>";
  22. }
  23. }
  24. }
  25. if (class_exists("SamplePlugin")) {
  26. $sample_plugin = new SamplePlugin();
  27. }
  28. if (isset($sample_plugin)) {
  29. add_action('wp_head',array(&$sample_plugin,'addHeaderCode'),1);
  30. add_filter('the_content','addLink'));
  31. }

MU-插件/样品/试样ajax.js.PHP

  1. <?PHP
  2. if (!function_exists('add_action')) {
  3. require_once("../../../wp-config.php");
  4. }
  5. ?>
  6. jQuery(document).ready(function(){
  7. jQuery(".foobar").bind("click",function() {
  8. var aref = this;
  9. jQuery(this).toggleClass('clicked');
  10. jQuery.ajax({
  11. url: "http://mysite/wp-content/mu-plugins/sample/sample-ajax.PHP",success: function(value) {
  12. jQuery(aref).html(value);
  13. }
  14. });
  15. });
  16. });

MU-插件/样品/试样ajax.PHP

  1. <?PHP
  2. if (!function_exists('add_action')) {
  3. require_once("../../../wp-config.php");
  4. }
  5. if (isset($sample_plugin)) {
  6. $sample_plugin->doAjax();
  7. } else {
  8. echo "unset";
  9. }
  10. ?>

[1]注意:以下教程让我​​很远,但在这一点上我很失望.
http://www.devlounge.net/articles/using-ajax-with-your-wordpress-plugin

TheDeadMedic是不对的. wordpress内置AJAX功能.发送你的ajax请求到/wp-admin/admin-ajax.PHP使用POST与参数’action’:
  1. jQuery(document).ready(function(){
  2. jQuery(".foobar").bind("click",function() {
  3. jQuery(this).toggleClass('clicked');
  4. jQuery.ajax({
  5. type:'POST',data:{action:'my_unique_action'},url: "http://mysite/wp-admin/admin-ajax.PHP",success: function(value) {
  6. jQuery(this).html(value);
  7. }
  8. });
  9. });
  10. });

然后如果您只希望它为登录用户工作,则将其挂接在插件中:

  1. add_action('wp_ajax_my_unique_action',array($sample_plugin,'doAjax'));

或者像这样挂钩它只能用于未登录用户

  1. add_action('wp_ajax_nopriv_my_unique_action','doAjax'));

如果您希望它适用于所有人,请同时使用.

admin-ajax.PHP已经使用了一些动作名称,所以请确保您查看文件,不要使用相同的动作名称,否则您会意外地尝试删除注释等.

编辑

对不起,我不太明白这个问题.我以为你在问如何做一个ajax请求.无论如何,我会尝试两件事情:

首先,让你的函数只返回AJAX这个字,而不用标记.接下来,尝试更改您的ajax调用,以便其成功和完整的回调:

  1. jQuery(document).ready(function(){
  2. jQuery(".foobar").bind("click",function() {
  3. var val = '';
  4. jQuery(this).toggleClass('clicked');
  5. jQuery.ajax({
  6. type:'POST',success: function(value) {
  7. val = value;
  8. },complete: function(){
  9. jQuery(this).html(val);
  10. }
  11. });
  12. });
  13. });

猜你在找的PHP相关文章