2012-03-16 139 views
2

当使用Ajax(在我的Wordpress主题中)调用PHP页面时,PHP echo 'Hello World!';工作正常,但调用其他Wordpress PHP函数(如get_bloginfo();),该函数返回undefined。是否有可能在Ajax调用中使用Wordpress函数?有什么其他的选择..我知道iframes可以工作。我试图加载一个输出插件功能的页面。Wordpress; Ajax请求中的PHP函数不起作用。另类?

弹出的错误是{致命错误:调用未定义功能get_bloginfo()在...}

+0

这听起来不错。只要你在WP环境中,这些功能就应该可以工作...... – elclanrs 2012-03-16 05:08:39

+0

以下是关于@elclanrs的问题,你有没有可能提到Wordpress以外的脚本? – rjz 2012-03-16 05:11:48

+0

该脚本是我正在构建的主题的插件脚本。因此,在页面中,我使用锚链接(使用ajax插件类)调用另一个页面(使用get_header和get_footer ... – user1273237 2012-03-16 05:14:57

回答

0

WP命令状get_bloginfo()应该是工作。

你确定你已经包含了所有适当的WordPress的标题(在响应脚本)?

+0

是的,普通的echo会显示输出,但似乎当回到wordpress内置函数时,输出错误 – user1273237 2012-03-16 05:36:25

+0

好吧,一个“常规”回声'“会显示在任何PHP脚本中。是否有类似'<?php require('/ the/path/to/your/wp-blog-header.php'); ?>在你的PHP脚本的顶部? – 2012-03-16 05:38:27

+0

为什么需要在这里使用?我正在使用ajax来获取文件。 – user1273237 2012-03-16 05:44:16

1

实际上,您需要在WordPress中进行Ajax调用。 [编辑:我的意思是,有一个规定的方式;是否需要虔诚地遵循它,或者是否有其他方法来剥皮猫是另一个故事]有许多教程(只需做一个“Ajax WordPress”的网络搜索并查找讨论实现的文章,而不是现在Ajax就是用于驱动它的后端)。

简短的版本是:

你应该让你的电话给特定的处理程序,为“admin-ajax.php”,你应该用POST做到这一点。你传递一个类似于'action = someaction & parameter = foo'的数据对象。

然后,你应该在“someaction”动作的functions.php中有一个钩子。

还有更多,但我不认为这是教程的最佳场所。可以说,你需要深入研究;你不能只按照直接标记+ JavaScript页面的方式进行Ajax调用。

但它可以做到。 WP中的联系人表单通常基于Ajax,因此他们可能有示例代码值得研究。

2

我没有测试它,尝试一些东西像下面使用插件

<?php 
/** 
* Plugin Name: Blog information 
* Plugin URI: http://www.test.com/ 
* Description: Displays Blog information 
* Version: 1.0 
* Author: your_name 
* Author URI: http://www.test.com/ 
*/ 
// Function for handling AJAX requests 
function getblog_request_handler() { 

    // Check that all parameters have been passed 
    if ((isset($_REQUEST['request']) && ($_REQUEST['request'] == 'getblog_Action'))) { 
     // Output the response from your call and exit 
     echo get_bloginfo(); 
     exit(); 
    } 
    elseif (isset($_REQUEST['request']) && ($_REQUEST['request'] == 'getblog_Action')) { 
     // Otherwise display an error and exit the call 
     echo "Error: Unable to display request."; 
     exit(); 
    } 

} 

// Add the handler to init() 
add_action('init', 'getblog_request_handler'); 

?> 

而且使用JS调用插件功能得到响应,

.... 

     jQuery.ajax({ 
      type : "POST", 
      url  : "index.php", 
      data : { 
         request : "getblog_Action" 
         }, 
      success : function(response) { 
            alert(response); 
       //jQuery(".blog_name").html(response); 
          } 
     }); 
.... 

当过你调用这个AJAX,你将使用ajax获取博客信息。

+0

谢谢你的回应和真棒代码,但包括wp-load.php做到了。 – user1273237 2012-03-16 06:50:30

+0

什么是更好的解决方案?这工作。 – user1273237 2012-03-16 07:20:07

+0

@ user1273237你用上面的插件试过了吗?我认为你可以按照这种方式在wordpress中进行ajax调用。 – mymotherland 2012-03-16 07:31:24