2013-06-13 3 views
0

ajax를 처음 사용하여 페이지가로드 된 후 Wordpress에서 사용자 정의 필드를 업데이트하는 간단한 방문 횟수 카운터를 만들려고합니다. 페이지가 캐싱되므로 PHP 만 사용하려는 시도는 작동하지 않습니다.캐시 된 페이지에서 AJAX로 Wordpress 사용자 정의 필드 업데이트

나는 ajax를 통해 게시물 ID를 PHP 파일로 전달하고, 사용자 정의 필드를 얻고, 새로운 히트 번호로 업데이트하기를 원한다.

현재 다음 코드가 있지만 사용자 지정 필드를 업데이트 할 수 없습니다.

$(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); 
?> 

내가 잘못 뭐하는 거지 여기 JQuery와있어? 또한 외부 파일을 가져 오는 것을 피하기 위해 같은 페이지/파일에 PHP 함수를 포함시키는 방법이 있습니까? 나는 교통량이 커질수록 파일이 너무 자주 요청 될 것이라고 걱정한다.

도움 주셔서 감사합니다.

답변

0

쿼리 문자열에 타임 스탬프를 추가하십시오.

var date = new Date(); 
var timestamp = date.getTime(); 

$(document).ready(function(
    $.ajax({ 
    url:'http://www.example.com/hits/hits.php?t=' + timestamp, 
    cache: false, 
    type: 'POST', 
    data: {PostId: '<?php echo get_the_ID() ?>'} 
    }); 
)); 

캐시 된 결과를 방지하기 위해 쿼리 문자열에 타임 스탬프를 추가하는 것이 좋습니다.

+0

타임 스탬프? 타임 스탬프는 무엇을합니까? – David

+0

업데이트 된 답변을 참조하십시오. –

+0

나는 본다. 추가했지만 스크립트가 여전히 사용자 정의 필드를 업데이트하지 않습니다. – David

관련 문제