/**
  * Registro de usuarios
  * @since v0.0.1
  * @author jprieton
  */
 public static function user_register()
 {
     $Input = new \jptt\core\Input();
     $Error = new \jptt\core\Error();
     $verify_nonce = (bool) $Input->verify_wpnonce('user_register');
     if (!$verify_nonce) {
         $Error->method_not_supported('user_register');
         wp_send_json_error($Error);
     }
     $user_password = $Input->post('user_password');
     $confirm_user_password = $Input->post('confirm_user_password');
     if (empty($user_password) || $user_password != $confirm_user_password) {
         $Error->add('user_password_fail', __('The password verification you entered does not match.', 'jptt'));
         wp_send_json_error($Error);
     }
     do_action('user_pre_register');
     $userdata = array('user_pass' => $Input->post('user_password'), 'user_login' => $Input->post('user_email'), 'user_email' => $Input->post('user_email'));
     if (!is_email($userdata['user_email'])) {
         $Error->invalid_email();
         wp_send_json_error($Error);
     }
     if (empty($userdata['user_pass'])) {
         $Error->empty_field('password');
         wp_send_json_error($Error);
     }
     $user_id = wp_insert_user($userdata);
     do_action('user_post_register', $user_id);
     if (is_wp_error($user_id)) {
         wp_send_json_error($user_id);
     } else {
         add_user_meta($user_id, 'show_admin_bar_front', 'false');
         $response[] = array('code' => 'user_register_success', 'message' => __('You have registered successfully.', 'jptt'));
         wp_send_json_success($response);
     }
 }
    global $wpdb;
    $wpdb instanceof \wpdb;
    $Input = new \jptt\core\Input();
    $userdata = get_userdata(get_current_user_id());
    $post_id = (int) $Input->get('post_id');
    $user_id = (int) $userdata->ID;
    $vote_value = (int) $Input->get('post_id');
    if (!has_voted($post_id, $user_id)) {
        $wpdb->insert("{$wpdb->prefix}voted", compact('post_id', 'user_id', 'vote_value'));
        wp_send_json(TRUE);
    } else {
        wp_send_json(FALSE);
    }
}, 10);
add_action('wp_ajax_user_post_visited', function () {
    $Input = new \jptt\core\Input();
    $post_id = (int) $Input->get('post_id');
    $visit_count = (int) get_post_meta($post_id, '_visit_count', TRUE);
    $visit_last_ip = get_post_meta($post_id, '_visit_last_ip', TRUE);
    $visit_ip = ip2long($Input->ip_address());
    if (in_array($visit_ip, (array) $visit_last_ip)) {
        wp_send_json(FALSE);
    }
    if (is_array($visit_last_ip)) {
        $visit_last_ip = array($visit_ip);
    } else {
        $visit_last_ip[] = $visit_ip;
        $visit_count++;
    }
    update_post_meta($post_id, '_visit_count', $visit_count);
    update_post_meta($post_id, '_visit_last_ip', $visit_last_ip);