在wordpress上编码ajax点击计数器

时间:2014-10-12 00:40:43

标签: php jquery ajax wordpress counter

我需要帮助为wordpress编码ajax点击计数器.... 我已经尝试了几天,似乎无法弄明白。 我有一个模板页面,列出自定义的帖子类型,并显示混音带/专辑 所有这些都是可下载的。模板页面在php中编码,因此链接是变量而不是静态html。我需要创建一个计数器,计算并显示每个下载链接被点击的次数....所以点击计数器......

这是模板页面上链接的代码。

<a href="<?php echo get_post_meta($post->ID,'mixtape_link',true); ?>" class="button small"><span>Download Now!</span></a>

我已经尝试了大量的脚本和插件,似乎无法弄明白。

如果有人可以发布示例代码或为我执行此操作,将非常感谢

1 个答案:

答案 0 :(得分:1)

HTML:

<a href="<?php echo get_post_meta($post->ID,'mixtape_link',true); ?>" id="thisdownloads" class="button small"><span>Download Now!</span></a>

<script>
    jQuery(document)ready(function() {

      jQuery(this).on('change', '#thisdownloads', function() {

        jQuery.ajax({
        type: "POST",
        url: "/wp-admin/admin-ajax.php",

        data: {
            action: 'update_downloads',
            ID: '<?php get_the_ID(); ?>'// if within the loop you need a correct id for this to work...........
        },
        success: function (output) {}
           console.log(output);
        });


      });
    });

</script>

PHP:

    add_action('wp_ajax_update_downloads', 'update_downloads');
add_action('wp_ajax_nopriv_update_downloads', 'update_downloads');

function update_downloads() {

  $id= sanitize_text_fields($_POST['ID']);

  $downloads= get_post_meta($id,'_downloads',true);

  if(!$downloads):
     $downloads=1;
  else:
     $downloads++;
  endif;

  update_post_meta($id,'_downloads', $downloads);
  echo $downloads;
  exit();

}

应该足够接近,如果你不能完成这项工作,你需要研究以下内容:

  1. jquery“on”改变
    2.jquery安全模式(wordpress)
  2. jquery ajax wordpress
  3. wordpress ajax功能添加动作
  4. update_post_meta