在缓存页面上使用AJAX更新WordPress自定义域

时间:2013-06-13 作者:David

我是ajax新手,正在尝试创建一个简单的命中计数器,在页面加载后更新Wordpress中的自定义字段。页面是缓存的,因此任何单独使用PHP的尝试都不会起作用。

我只想通过ajax将post-ID传递给php文件,获取自定义字段,并用新的命中数更新它。

我目前有以下代码,但无法更新自定义字段。以下是jquery:

 $(document).ready(function(
    $.ajax({
    url:\'http://www.example.com/hits/hits.php\',
    cache: false,
    type: \'POST\',
    data: {PostId: \'<?php echo get_the_ID() ?>\'}
    });
));
以及它调用的PHP文件:

<?php 
/* Template Name: AJAX  */ 
?>

<?php 
    $postid = $_POST[\'PostId\'];  // get the hits from AJAX and save it for PHP      

    $hits = (int) get_post_meta($postid, \'hit_number\', true);
    $newhits = $hits + 1;
    update_post_meta($postid, \'hit_number\', $newhits);
?>
我做错了什么?此外,是否有办法在同一页面/文件中包含PHP函数,以避免引入外部文件?我担心随着流量越来越大,文件会被频繁请求。

谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

WordPress以无冲突模式加载jQuery。不使用$. 使用jQueryone of the other solutions in the Codex..js 文件,这是行不通的。您无法运行PHP 在这样的Javascript文件中,无需重新配置服务器get_the_ID 无论如何都可能失败您正在直接加载.php 文件这意味着没有加载WordPress,因此任何使用WordPress函数的尝试都不会起作用第1项和第3项肯定是问题。第#2项可能是,也可能不是。

您应该使用AJAX API 为了这个。您的WordPress功能将被加载并正常工作。上的示例AJAX API Codex页面非常简单。将代码转换为这种模式应该不难,但如果您有问题,我会在有时间时编辑答案。

结束

相关推荐

IIS上的home_url缺少固定链接index.php

我正在使用IIS,没有任何包含索引的URL重写。最后是php。自定义permalink结构为:/index.php/%year%/%monthnum%/%postname%/问题是home\\u url函数不包含索引。php,所以如果我想引用自定义页面<?php echo home_url() . \'/my-page/\'; ?> 退货http://domain.com/my-page/ 但我需要的是http://domain.com/index.php/my-page/ .是否有包含索引的