Wordpress 和 AJAX - 包括 wp-blog-header 中断了通话

问题描述 投票:0回答:2

我的 WordPress 主题文件夹中有一个 ajax.php 文件,并且该文件在 DEV 服务器上运行良好。然而,当我将它移动到另一台服务器时,我编写的脚本不再起作用......奇怪!

我现在回滚尝试找到问题,但最烦人的是,因为相同的版本可以在另一台服务器上运行?!

这是代码(它的价值......)

Javascript 调用:

   function change_event(ID){
     //alert("ID: "+ID);   
     $.post('wp-content/themes/muni/ajaxcalls.php', 
     { id: ID }, 
     function(data){
       alert('complete: '+data);
       //$('#showingevent').html(data);
     });     
   }

ajaxcalls.php

require_once("../../../wp-blog-header.php");  
global $more; 

在这一点上,它破裂了。包含我在 require 之后编写的代码是没有意义的。如果我评论这一行,下面的代码就可以工作。

如果我直接浏览ajaxcalls.php文件,我会得到我期望的结果,但它不会反馈到ajax调用的成功函数。

任何帮助将不胜感激

干杯!

汤姆

编辑:我正在使用这个触发change_event:

   $('.eventoption A').click(function(ev){
     ev.preventDefault();
     change_event($(this).attr('id'));
     clearInterval(timer);
   });

我还更新了change_event()函数以反映我正在使用的函数而不是我之前使用的调试函数。

当我包含 wp-blog-header.php 文件时,问题就发生了。

php ajax wordpress
2个回答
4
投票

技巧是包含 wp-load.php 而不是 wp-blog-header.php


0
投票

用这个。它正在本地主机上运行,我希望它也适用于实时服务器。

  1. 首先获取你网站根目录的文件夹名称

$folder = substr(substr($_SERVER["REQUEST_URI"],1), 0, 
    strpos(substr($_SERVER["REQUEST_URI"],1), "/"));

  1. 然后你可以使用 $_SERVER["DOCUMENT_ROOT"]、$folder 和 wp-blog-header.php 获取 ajax 的 url,如下所示:

$ajax_url = realpath($_SERVER["DOCUMENT_ROOT"]).'/'.$folder.'/wp-blog-header.php';

© www.soinside.com 2019 - 2024. All rights reserved.