0

私は問題に遭遇しました、そして誰かが私がこれを解決するのを手伝ってくれるなら私は感謝します。

基本的に、ユーザーがお気に入りに投稿を追加し、お気に入りをCookieに保存して記憶できるようにするコードを作成していますが、失敗します。これが私のコードです:

まず、このコードを使用して、ユーザーが投稿を保存したかどうかをチェックする関数を実行します。

<?php dt_fav_action(); ?>

そして、これが私のdt_fav_action関数です。

function dt_fav_action() {
    global $post;
    $cookie = $_COOKIE['fav-'.$post->ID];
    if ($cookie == 1) {
        $user_faved = true;
    }
    if ($user_faved == true) {
        echo '<a href="';dt_favorites_link();echo '" class="faved">';dt_count_fav();echo '</a>';
    } else {
        echo '<a href="" class="addfav">';dt_count_fav();echo '</a>';
    }
}

そして、これが$ .ajaxリクエストで、私のphpファイルにデータを送信して、お気に入りを処理し、Cookieなどを保存します。

$('.addfav').click(function(event){
    $(this).unbind('click');
    var parentfav = $(this).parent();
    var postid = $(this).parent().parent().parent().attr('id').replace(/[^0-9]/g, '');
    $(this).fadeOut();
    $.ajax({
        url: '<?php bloginfo('template_directory'); ?>/ajax/favorite.php',
        type: 'get',
        data: { postid : postid },
        dataType: 'json',
        success: function(data){
            parentfav.html('<a href="<?php dt_favorites_link(); ?>" class="faved">' + data.msg + '</a>');
            parentfav.children('.faved').css({'background-position' : 'left bottom', 'color' : '#1871a4'});
        }
    });
    return false;
});

そして最後に、これはfavorites.phpで、お気に入りの数を更新し、後でdt_fav_action関数を介して取得できるようにCookieを追加しますが、実際の問題は、$ _COOKIEが常にnullを返し、保存されないことです。

<?php

// include WordPress
require('../../../../wp-blog-header.php');
$data = array();

    // update post favorites count
    $postid = $_GET['postid'];
    update_post_meta($postid, 'faves', (int)get_post_meta($postid, 'faves', true)+1);
    $updated = get_post_meta($postid, 'faves', true);


    setcookie('fav-'.$postid, '1', time() + (20 * 365 * 24 * 60 * 60));

    $data['msg'] = $updated;

echo json_encode($data);

?>

setcookieの部分では、これが$ .ajaxを介して呼び出され、その後スクリプトがCookieを認識しない場合に、Cookieを設定します。そのため、Cookieは常に失敗し、保存状態を記憶しません。

助けてください..事前に感謝します

4

1 に答える 1

1

ルートディレクトリのすべての子ディレクトリで使用できるようにCookieを設定します。

setcookie(
      'fav-'.$postid, 
      '1', 
      time() + (20 * 365 * 24 * 60 * 60), 
      "/"
);
于 2012-07-14T11:34:52.333 に答える