世间所有的相遇,都是久别重逢

Wordpress非插件自定义点赞功能

前端HTML部分

<div class="btn-zan <?php if(isset($_COOKIE['bigfa_ding_'.get_the_ID()])) echo ' liked'; ?>" data-id="<?php get_the_ID(); ?>" data-action="ding">
    <i class="wpcom-icon fa fa-thumbs-o-up"></i><span class="entry-action-num">(
        <?php 
        if( get_post_meta(get_the_ID(),'bigfa_ding',true) ){            
           echo get_post_meta(get_the_ID(),'bigfa_ding',true);
       } else {
           echo '0';
       }?>
    )</span>
</div>
.entry-action .btn-zan {
    display: inline-block;
    padding: 4px 30px;
    font-size: 18px;
    line-height: 30px;
    color: #f8504b;
    border: 1px solid #f8504b;
    border-radius: 4px;
    vertical-align: top;
}
.entry-action .btn-zan.liked, .entry-action .btn-zan:hover {
    color: #fff;
    background-color: #f8504b;
    cursor: pointer;
    border-color: #f8504b;
}
.entry-action .btn-zan i {
    position: relative;
    vertical-align: top;
    line-height: 30px;
}

模板的footer.php文件中添加Javascript部分代码,需要引用版本为1.10或以上的jQuery

<script type="text/javascript">
    
//获取cookie
function getCookie(cookieName){  
    var cookieValue="";  
    if (document.cookie && document.cookie != '') {   
        var cookies = document.cookie.split(';');  
        for (var i = 0; i < cookies.length; i++) {   
             var cookie = cookies[i];  
             if (cookie.substring(0, cookieName.length + 2).trim() == cookieName.trim() + "=") {  
                   cookieValue = cookie.substring(cookieName.length + 2, cookie.length);   
                   break;  
             }  
         }  
    }   
    return cookieValue;  
}
jQuery(document).ready(function($) {
    $.fn.postLike = function() {
        if ($(this).hasClass("liked")) {
            var post_id = $(".btn-zan").attr("data-id");
            //获取COOKIE
            if ( getCookie('bigfa_ding_' + post_id) != '' ){
                alert('您已经点过赞了!');
            }
            return false;
        } else {
            $(this).addClass("liked");
            var id = $(this).data("id"),action = $(this).data("action"),rateHolder = $(this).children(".entry-action-num");
            var ajax_data = {action: "bigfa_like",um_id: id,um_action: action};
            $.post("<?php bloginfo('url');?>/wp-admin/admin-ajax.php", ajax_data,
            function(data) {
                $(rateHolder).html(data);
            });
            return false;
        }
    };
    $(document).on("click", ".btn-zan",function() {
        $(this).postLike();
    });
    
});
</script>

 

function.php文件添加方法

add_action('wp_ajax_nopriv_bigfa_like', 'bigfa_like');
add_action('wp_ajax_bigfa_like', 'bigfa_like');
function bigfa_like(){
    global $wpdb,$post;
    $id = $_POST["um_id"];
    $action = $_POST["um_action"];
    if ( $action == 'ding'){
        $bigfa_raters = get_post_meta($id,'bigfa_ding',true);
        $expire = time() + 99999999;
        $domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false; // make cookies work with localhost
        setcookie('bigfa_ding_'.$id,$id,$expire,'/',$domain,false);
        if (!$bigfa_raters || !is_numeric($bigfa_raters)) {
            add_post_meta($id, 'bigfa_ding', 1);
        }else {
            update_post_meta($id, 'bigfa_ding', ($bigfa_raters + 1));
        }
        echo get_post_meta($id,'bigfa_ding',true);
    } 
    die;
}

 

posted @ 2022-07-22 10:08  关泽霖  阅读(177)  评论(0编辑  收藏  举报