首先說明WordPress AJAX 給WordPress主題分類\標簽頁面增加點贊功能或者是WordPress文章點贊都會給數(shù)據(jù)庫增加表,自WordPress 4.4新增了Term meta,意味著可以像文章點贊一樣來實現(xiàn)分類\標簽頁面增加點贊功能
wordpress當前把下面的代碼加入到functions.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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的路徑!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
jQuery(document).on("click", ".termlike", function() { var _self = jQuery(this); if (_self.hasClass('is-active')) { alert('您已經(jīng)贊過啦') } 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分類/標簽頁面點贊調(diào)用方法:
1 |
<?php wp_term_like();?> |
在對應歸檔頁面使用下面代碼,如在其他地方調(diào)用則不會有任何輸出。