一聚教程网:一个值得你收藏的教程网站

热门教程

WordPress原生的文章AJAX点赞的功能

时间:2022-06-25 18:40:03 编辑:袖梨 来源:一聚教程网

文章AJAX点赞的功能实现原理

通过自定义字段保存赞数量,通过cookies来禁止重复赞.
WordPress不用插件来实现文章AJAX点赞的操作过程
我们直接将下面的代码加入到你的当前主题的 functions.php 中,内容如下:

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

然后在您的当前主题的footer.php文件中加入以下代码,这里部落说明一下,是加入js代码:

$.fn.postLike = function() {  
    if ($(this).hasClass('done')) {  
        alert('您已赞过该文章');  
        return false;  
    } else {  
        $(this).addClass('done');  
        var id = $(this).data("id"),  
        action = $(this).data('action'),  
        rateHolder = $(this).children('.count');  
        var ajax_data = {  
            action: "specs_zan",  
            um_id: id,  
            um_action: action  
        };  
        $.post("/wp-admin/admin-ajax.php", ajax_data,  
        function(data) {  
            $(rateHolder).html(data);  
        });  
        return false;  
    }  
};  
$(document).on("click", ".specsZan",  
    function() {  
        $(this).postLike();  
}); 

再接下来,我们在你想显示的地方加入如下代码,推荐加到文章内容尾部.

  
    javascript:;" data-action="ding" data-id="" class="specsZan ID])) echo 'done';?>">喜欢   
        ID,'specs_zan',true) ){  
                    echo get_post_meta($post->ID,'specs_zan',true);  
                } else {  
                    echo '0';  
                }?>
  
      
 

最后,当然是CSS样式了,这里给一段简单的:

.post-like{text-align:center;padding:10px}  
.post-like a{ background-color:#21759B;border-radius: 3px;color: #FFFFFF;font-size: 12px;padding: 5px 10px;text-decoration: none;outline:none}  
.post-like a.done, .post-like a:hover{background-color:#eee;color:#21759B;}   
.post-like a.done{cursor:not-allowed} 
到此,所有过程走完,自己去看看效果吧.

热门栏目