当用户单击类计数时,计数器应工作:
<div class="pop-btn" class="counter"><a href="https://www.example.com">Know More</a></div>
<div class="count"></div>
问题是我想保存号码,例如:
用户#1用类“counter”单击div 10次
用户#2打开站点,计数为10,他单击,现在计数器开始11,新用户依此类推。
我正在尝试这样做,以跟踪文件的下载次数。
知道我该怎么做吗?
以下是我的代码:
功能。php
function js_enqueue_scripts() {
wp_enqueue_script ("my-ajax-handle", get_stylesheet_directory_uri() . "/js/counter.js", array(\'jquery\'));
wp_localize_script(\'my-ajax-handle\', \'the_ajax_script\', array(\'ajaxurl\' =>admin_url(\'admin-ajax.php\')));
}
add_action("wp_enqueue_scripts", "js_enqueue_scripts");
function set_button_count(){
$counterFile = \'counter.txt\' ;
// jQuery ajax request is sent here
if ( isset($_POST[\'increase\']) )
{
if ( ( $counter = @file_get_contents($counterFile) ) === false ) die(\'Error : file counter does not exist\') ;
file_put_contents($counterFile,++$counter) ;
echo $counter ;
return false ;
}
if ( ! $counter = @file_get_contents($counterFile) )
{
if ( ! $myfile = fopen($counterFile,\'w\') )
die(\'Unable to create counter file !!\') ;
chmod($counterFile,0644);
file_put_contents($counterFile,0) ;
}
}
add_action(\'wp_ajax_nopriv_set_button_count\', \'set_button_count\');
add_action(\'wp_ajax_set_button_count\', \'set_button_count\');
计数器。js公司
jQuery(document).on(\'click\',\'.counter\',function(){
jQuery(\'.count\').html(\'Loading...\');
var ajax = jQuery.ajax({
method : \'post\',
url : the_ajax_script.ajaxurl, // Link to this page
data : { \'action\':\'set_button_count\',\'increase\' : \'1\' }
});
ajax.done(function(data){
jQuery(\'.count\').html(data) ;
});
ajax.fail(function(data){
alert(\'ajax fail : url of ajax request is not reachable\');
});
});
控制台错误:错误400 Post/wp admin/admin ajax。php
SO网友:Vivek
将ajax调用作为一个函数,以避免控制台错误400 Post。它打开了通道,我能够获得传递的参数。
柜台js公司
jQuery(document).on(\'click\',\'.counter\',function(e){
testAjax(the_ajax_script.ajaxurl);
});
function testAjax(link) {
$.ajax({
url: link,
type: \'post\',
data: {
\'action\': \'set_button_count\',
\'increase\' : \'1\'
},
success: function(data) {
jQuery(\'.count\').html(data);
}
});
}
在函数中。php我将$counterFile变量值更改为文本文件的链接,并通过WordPress管理面板上传。我将链接指定为服务器目录路径,以避免出现错误[“无法打开流:HTTP包装器不支持可写连接”]。
功能。php
function js_enqueue_scripts() {
wp_enqueue_script ("my-ajax-handle", get_stylesheet_directory_uri() . "/js/counter.js", array(\'jquery\'));
wp_localize_script(\'my-ajax-handle\', \'the_ajax_script\', array(\'ajaxurl\' =>admin_url(\'admin-ajax.php\')));
}
add_action("wp_enqueue_scripts", "js_enqueue_scripts");
function set_button_count(){
$counterFile = \'/home/example/public_html/wp-content/uploads/2019/06/counter.txt\';
if ( isset($_POST[\'increase\']) )
{
if ( ( $counter = @file_get_contents($counterFile) ) === false ) die(\'Error : file counter does not exist\') ;
file_put_contents($counterFile,++$counter);
echo file_get_contents($counterFile);
wp_die();
}
if ( ! $counter = @file_get_contents($counterFile) )
{
if ( ! $myfile = fopen($counterFile,\'w\') )
die(\'Unable to create counter file !!\') ;
chmod($counterFile,0644);
file_put_contents($counterFile,0) ;
}
wp_die();
}
add_action(\'wp_ajax_nopriv_set_button_count\', \'set_button_count\');
add_action(\'wp_ajax_set_button_count\', \'set_button_count\');
希望它能帮助别人。