wordpress count链接按ip地址点击

时间:2015-02-22 22:15:50

标签: ajax wordpress count download click

我正在构建wordpress网站,它可以选择从某些自定义帖子类型下载zip文件。通过单击下载按钮,用户自动开始下载zip文件。

<a id="countable_link" href="#">download</a>

我的目标是显示同一按钮旁边的下载次数。 到目前为止,一切都运行良好,除了我能够多次触发反无穷大的事实。

而不是它,我希望该计数器只能由唯一用户执行一次。 我假设这必须对用户的ip地址做一些事情,但我对PHP,SQL和ajax的了解非常差。

以下是我找到的脚本:(它也已发布here

<?php

if ( is_admin() ) add_action( 'wp_ajax_nopriv_link_click_counter', 'link_click_counter' );
function link_click_counter() {

    if ( isset( $_POST['nonce'] ) &&  isset( $_POST['post_id'] ) && wp_verify_nonce( $_POST['nonce'], 'link_click_counter_' . $_POST['post_id'] ) ) {
       $count = get_post_meta( $_POST['post_id'], 'link_click_counter', true );
       update_post_meta( $_POST['post_id'], 'link_click_counter', ( $count === '' ? 1 : $count + 1 ) );
    }
    exit();
}


add_action( 'wp_head', 'link_click_head' );
function link_click_head() {
    global $post;

    if( isset( $post->ID ) ) {
?>
   <script type="text/javascript" >
   jQuery(function ($) {
      var ajax_options = {
        action: 'link_click_counter',
        nonce: '<?php echo wp_create_nonce( 'link_click_counter_' . $post->ID ); ?>',
        ajaxurl: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
        post_id: '<?php echo $post->ID; ?>'
      };

      $( '#countable_link' ).on( 'click ', function() {
        var self = $( this );
        $.post( ajax_options.ajaxurl, ajax_options, function() {
            window.location.href = self.attr( "href" );
        });
        return false;
    });
});
</script>
<?php
    }
}
?>

当我将此代码段放入我的functions.php文件中时,它会生成具有确切点击次数的自定义字段值。 如果这些数字更加真实,那将会很棒。例如,如果它显示350的值,人们真的想知道350个不同的用户下载了内容。

我很感激除了使用其他插件之外的任何解决方案。如果以某种方式可以合并到这个片段中,它将最终成为我的圆圈。

谢谢,

0 个答案:

没有答案