Nếu bạn muốn thêm chức năng điểm danh cho tài khoản WordPress để tăng tương tác, bài viết này sẽ giúp bạn.

Chức năng điểm danh cho tài khoản WordPress sử dụng ACF

Plugin cần thiết cho chức năng này là Advanced Custom Fields (ACF), và hệ thống điểm thưởng để làm phần thưởng điểm danh, tham khảo các bài viết này:

Tạo dữ liệu

Bạn cần tạo một trường dữ liệu để lưu số lượng ngày điểm danh liên tiếp, và một trường ngày tháng để lưu lần cuối điểm danh.

Phương thức xử lí

Tại functions.php, các bạn thêm phương thức tính điểm như sau.

/**
 * Điểm danh qua Ajax
 */
add_action('wp_ajax_rollup', 'roll_up');
add_action('wp_ajax_nopriv_rollup', 'roll_up');
function roll_up() {
	$r_data = array();
	if (is_user_logged_in()) {
		$curr_user_id = get_current_user_id();
		$last_login = get_field('last_login', 'user_' . $curr_user_id);
		$ru_count = get_field('rollup_count', 'user_' . $curr_user_id);
		if (!$ru_count) $ru_count = 0;
		date_default_timezone_set('Asia/Ho_Chi_Minh');
		$curr_date = date('d/m/Y', time());
		if ($last_login != $curr_date) {
        	$quan = 30;
        	$yes_day = date('d/m/Y', strtotime("-1 day"));
        	if ($last_login == $yes_day) $ru_count++;
        	else $ru_count = 1;
        	if (intval($ru_count) % 7 == 0) { // Điểm danh đủ 7 ngày
        		$quan = 100;
        	}
        	if (intval($ru_count) % 30 == 0) { // Điểm danh đủ 30 ngày
        		$quan = 500;
        	}
        	update_field('rollup_count', $ru_count, 'user_' . $curr_user_id);
        	$c_v = calc_fish($quan, '+');
        	update_field('last_login', $curr_date, 'user_' . $curr_user_id);
        	$r_data = array('rollup' => 'success');
        } else {
        	$r_data = array('rollup' => 'fail');
        }
	} else {
		$r_data = array('rollup' => 'fail');
	}
	wp_send_json_success($r_data);
	die();
}

Với calc_fish là phương thức tính Cá ở bài viết điểm thưởng. Phương thức trên cộng 30 điểm khi điểm danh hàng ngày, 100 điểm khi điển danh đủ 7 ngày và 500 điểm khi điểm danh đủ 30 ngày liên tiếp.

jQuery

Bạn chỉ cần gọi Ajax như sau.

<script type="text/javascript">
    $(document).ready(function() {
        $('#roll-up-btn').click(function() {
            $(this).addClass('disabled');
            $.ajax({
                type: 'post',
                dataType: 'json',
                url: ocmAjax,
                data: {
                    'action': 'rollup'
                },
                success: function(response) {
                    if (response.success) {
                        if (response.data.rollup == 'success') {
                            console.log('Điểm danh thành công.');
                        } else {
                            console.log('Điểm danh thất bại.');
                        }
                    }
                }
            });
        });
    });
</script>

Chúc các bạn thành công!

5/5 (3 bình chọn)