首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对按钮的点击量进行计数以创建"Top Event“区域

对按钮的点击量进行计数以创建"Top Event“区域
EN

Stack Overflow用户
提问于 2014-05-29 22:41:33
回答 2查看 266关注 0票数 0

我在一个旅游网站上工作,显示多个旅游。我正在使用WordPress,并创建了一个名为Tour的自定义帖子类型。

在每个导览里面都有一个Book Now按钮,它被创建为一个自定义的meta框。立即预订按钮包含指向第三方预订系统的链接。

我要做的是在主页上创建一个字段,以显示本周最受欢迎的旅游。这将通过每个教程中的立即预订按钮的点击量来判断。

因此,当用户在一周内的某一次旅行中点击“立即预订”时,系统会对该旅行设置一个计数,一周内最高次数的旅行将作为主页上的一个链接。

如何通过JavaScript或PHP让它工作?

EN

回答 2

Stack Overflow用户

发布于 2014-05-29 22:54:37

使用jquery触发Book Now按钮上的单击事件

代码语言:javascript
复制
  $(document).ready(function(){
      $("#booknow").click(function(){
          $.ajax({
             type: "POST",
             url: "<?php echo site_url(); ?>/wp-admin/admin-ajax.php",
              data: { action: "countaddone", postId: "1" }
          });
      });
  });

现在在主题functions.php文件中创建函数,如下所示。

代码语言:javascript
复制
add_action('wp_ajax_countaddone', 'my_countlogin');
add_action('wp_ajax_nopriv_countaddone', 'my_countlogin');

function my_countlogin(){
     $postid = $_POST['postId'];
     $getcount = get_post_meta($postid,'_my_meta_getcount');
     $count = $getcount[0] + 1;
     update_post_meta($postid,'_my_meta_getcount',$count);
}

使用此代码获取点击按钮的次数。

代码语言:javascript
复制
 $getcount = get_post_meta($postid,'_my_meta_getcount');
票数 1
EN

Stack Overflow用户

发布于 2014-05-29 22:52:21

每个链接都应该有一个类和唯一标识符

代码语言:javascript
复制
<a href="/some/trip/package-A" class="countable" data-id="package-A">Click</a>

在javascript端使用jquery时,可以绑定到链接的click事件。

代码语言:javascript
复制
$('a.countable').click(function() {
     // get our trip identifier
     var identifier = $(this).attr('data-id');
     // ajax call to increment counter
     jQuery.post(
            '/counter.php',
            {track_id: identifier}
        );
    }
});

然后counter.php将track_id作为数据库变量接收,并在某个地方( $_POST / redis /等)递增您的计数器。通过调用increment_counter()。您还需要按周/月/日/等从数据存储中报告最受欢迎的数据的功能。因为这可能是数据密集型的,所以最好是通过cron脚本来生成最终输出,而不是对每个页面请求都这样做。在最坏的情况下,您应该将"Top X“结果缓存一段时间(一小时、六小时、一天?)。

代码语言:javascript
复制
 <?php
 // assumes integer ids, filter inputs appropriately
 $identifier = (int) $_POST['track_id']; 

 if (!empty($identifier)) {
      increment_counter($identifier);
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23936060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档