我正在旅游网站上展示多个旅游。我正在使用WordPress并创建了一个名为Tours的自定义帖子类型。
每个游览内部都是“立即预订”按钮,该按钮作为自定义元框创建。 “立即预订”按钮包含指向第三方预订系统的链接。
我要做的是在主页上创建一个字段,以显示本周最受欢迎的游览。这将通过每次巡演中“立即预订”按钮的点击次数来判断。
因此,每当用户点击本周特定行程的“立即预订”时,计数将设置为该行程,并且一周内编号最高的行程将作为主页上的链接。
如何通过JavaScript或PHP实现此功能?
答案 0 :(得分:1)
使用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');
答案 1 :(得分:0)
每个链接都应该有一个类和唯一标识符
<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变量,并通过调用increment_counter()将你的计数器增加到某个地方(database / redis / etc ..)。您还需要从数据存储区中按周/月/日/等报告最受欢迎的功能。由于这可能是数据密集型的,因此最好通过生成最终输出的cron脚本来执行此操作,而不是在每个页面请求上执行此操作。在最坏的情况下,你应该缓存&#34; Top X&#34;结果一段时间(一小时,六小时,一天?)。
<?php
// assumes integer ids, filter inputs appropriately
$identifier = (int) $_POST['track_id'];
if (!empty($identifier)) {
increment_counter($identifier);
}