首先说明 WordPress AJAX 给 WordPress 主题分类\标签页面增加点赞功能或者是 WordPress 文章点赞都会给数据库增加表,自 WordPress 4.4 新增了 Term meta,意味着可以像文章点赞一样来实现分类\标签页面增加点赞功能,wordpress 当前把下面的代码加入到 functions.php:
- function wp_term_like( $preifx = null){
- global $wp_query;
- if(!is_tax() && !is_category() && !is_tag()) return ;
- $tax = $wp_query->get_queried_object();
- $id = $tax->term_id;
- $num = get_term_meta($id,'_term_like',true) ? get_term_meta($id,'_term_like',true) : 0;
- $active = isset($_COOKIE['_term_like_'.$id]) ? ' is-active' : '';
- $output = '<button class="button termlike' . $active . '" data-action="termlike" data-action-id="' . $id . '">' . $prefix . '<span class="count">' . $num . '</span></button>';
- echo $output;
- }
- add_action('wp_ajax_nopriv_termlike','wp_term_like_callback');
- add_action('wp_ajax_termlike','wp_term_like_callback');
- function wp_term_like_callback(){
- $id = $_POST['actionId'];
- $num = get_term_meta($id,'_term_like',true) ? get_term_meta($id,'_term_like',true) : 0;
- $domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false; // make cookies work with localhost
- setcookie('_term_like_'.$id,$id,$expire,'/',$domain,false);
- update_term_meta($id,'_term_like',$num + 1);
- echo json_encode(array(
- 'status'=>200,
- 'data'=> $num + 1,
- ));
- die;
- }
AJAX js 代码加入的你的 js 文件中,注意 admin-ajax.php 的路径!
- jQuery(document).on("click", ".termlike", function() {
- var _self = jQuery(this);
- if (_self.hasClass('is-active')) {
- alert('您已经赞过啦')
- } else {
- _self.addClass('is-active');
- jQuery.ajax({
- url: /wp-admin/admin-ajax.php,//注意你的该文件路径
- data: _self.data(),
- type: 'POST',
- dataType: "json",
- success: function(data) {
- if (data.status === 200) {
- _self.find('.count').html(data.data)
- } else {
- alert('服务器正在努力找回自我')
- }
- }
- })
- }
- });
完成以上所有的操作以后,我们开始讲 WordPress 分类/标签页面点赞调用方法:
- <?php wp_term_like();?>
在对应归档页面使用下面代码,如在其他地方调用则不会有任何输出。