2017-04-17 79 views
1

我試圖做出與WP AJAX簡單的插件,而我是使按鈕,如「喜歡」與支持一些民族的職位如何WP現時添加簡單的Ajax功能在WordPress

我的問題 1. 我找到了一個解決方案來確保它與隨機數,但我指的是谷歌,但不成功。

我的鏈接時,我認爲代碼:

<a class="love-button" href="http://localhost/topaco/wp-admin/admin-ajax.php?action=post_love_add_love&amp;post_id=243" data-id="243">give like for pơst</a> 

2. 我可以雙擊,3次點擊,點擊4多,數量不斷增加,如果我點擊該按鈕。

如何限制一個點擊一個會話或設置時間用戶可以點擊增加數量。

這裏是我的代碼,

在PHP的插件文件:

add_action('wp_enqueue_scripts', 'ajax_test_enqueue_scripts'); 
function ajax_test_enqueue_scripts() { 
    if(is_single()) { 
     wp_enqueue_style('love', plugins_url('/love.css', __FILE__)); 
    } 
    wp_enqueue_script('love', plugins_url('/love.js', __FILE__), array('jquery'), '1.0', true); 
    wp_localize_script('love', 'postlove', array(
     'ajax_url' => admin_url('admin-ajax.php'), 
    )); 
} 
add_filter('the_content', 'post_love_display', 99); 
function post_love_display($content) { 

    //check_ajax_referer('thienduc', 'security'); 

    $love_text = ''; 

    if (is_single()) { 

     $love = get_post_meta(get_the_ID(), 'post_love', true); 
     $love = (empty($love)) ? 0 : $love; 

     $love_text = '<p class="love-received"><a class="love-button" href="' . admin_url('admin-ajax.php?action=post_love_add_love&post_id=' . get_the_ID()) . '" data-id="' . get_the_ID() . '">give love</a><span id="love-count">' . $love . '</span></p>'; 
    } 
    return $love_text . $content; 
} 
add_action('wp_ajax_nopriv_post_love_add_love', 'post_love_add_love'); 
add_action('wp_ajax_post_love_add_love', 'post_love_add_love'); 
function post_love_add_love() { 
    $love = get_post_meta($_REQUEST['post_id'], 'post_love', true); 
    $love++; 
    update_post_meta($_REQUEST['post_id'], 'post_love', $love); 
    if (defined('DOING_AJAX') && DOING_AJAX) { 
     echo $love; 
     die(); 
    } 
    else { 
     wp_redirect(get_permalink($_REQUEST['post_id'])); 
     exit(); 
    } 
} 

========================= ====

和JS文件

jQuery(document).on('click', '.love-button', function() { 
    var post_id = jQuery(this).data('id'); 
    jQuery.ajax({ 
     url : postlove.ajax_url, 
     type : 'post', 
     data : { 
      action : 'post_love_add_love', 
      post_id : post_id, 
     }, 
     success : function(response) { 
      jQuery('#love-count').html(response); 
     } 
    }); 

    return false; 
}) 

回答

1

您可以使用cookies像這樣:

$cookie_name = "liked-" . get_the_ID(); 
$cookie_value = get_the_ID(); 

if(!isset($_COOKIE[$cookie_name])) { 
    // Fire like action here and set cookie 

setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // keep it for a month 
} else { 
    // Do something, if post is already liked 
} 
+0

感謝您的意見,但如何添加nonce到網址。 :) –

0

如果您或某人需要關於添加隨機數的答案。

1-添加隨機數以wp_localize_script:

wp_localize_script('love', 'postlove', array(
    'ajax_url' => admin_url('admin-ajax.php'), 
    'security' => wp_create_nonce('love-nonce'), 
)); 

2-添加check_ajax_referer()到你的函數:

function post_love_add_love() { 
    check_ajax_referer('love-nonce'); 
    // Your code ... 
} 

3-添加隨機數以您的JS代碼(數據塊):

data : { 
    action : 'post_love_add_love', 
    post_id : post_id, 
    security: postlove.security, 
}, 

至於第二部分,您可以使用@Ali_k解決方案。

相關問題