我在一个旅游网站上工作,显示多个旅游。我正在使用WordPress,并创建了一个名为Tour的自定义帖子类型。
在每个导览里面都有一个Book Now按钮,它被创建为一个自定义的meta框。立即预订按钮包含指向第三方预订系统的链接。
我要做的是在主页上创建一个字段,以显示本周最受欢迎的旅游。这将通过每个教程中的立即预订按钮的点击量来判断。
因此,当用户在一周内的某一次旅行中点击“立即预订”时,系统会对该旅行设置一个计数,一周内最高次数的旅行将作为主页上的一个链接。
如何通过JavaScript或PHP让它工作?
发布于 2014-05-29 22:54:37
使用jquery触发Book Now按钮上的单击事件
$(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文件中创建函数,如下所示。
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);
}使用此代码获取点击按钮的次数。
$getcount = get_post_meta($postid,'_my_meta_getcount');发布于 2014-05-29 22:52:21
每个链接都应该有一个类和唯一标识符
<a href="/some/trip/package-A" class="countable" data-id="package-A">Click</a>在javascript端使用jquery时,可以绑定到链接的click事件。
$('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“结果缓存一段时间(一小时、六小时、一天?)。
<?php
// assumes integer ids, filter inputs appropriately
$identifier = (int) $_POST['track_id'];
if (!empty($identifier)) {
increment_counter($identifier);
}https://stackoverflow.com/questions/23936060
复制相似问题