0°

WORDPRESS分类/标签AJAX点赞

本功能可以用在分类、标签,以及其他同级自定义term上。必须为WORDPRESS4.4及以上版本。

实现方法

下面的代码加入到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;
}

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('服务器正在努力找回自我')
                }
            }
        })
    }
});

调用方法

在对应归档页面使用下面代码,如在其他地方调用则不会有任何输出

<?php wp_term_like();?>

函数有一个前缀文本参数可以设置。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论