diff --git a/css/style.css b/css/style.css new file mode 100644 index 00000000..e42007d9 --- /dev/null +++ b/css/style.css @@ -0,0 +1,25 @@ +.likeImg{ + display: inline-block; + width: 20px; + cursor: pointer; + transition: transform 0.3s ease-in-out; +} + +.likeImg:hover { + transform: scale(1.4); +} + +.alert{ + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.alert-warning{ + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba; +} + diff --git a/img/heart-active.svg b/img/heart-active.svg new file mode 100644 index 00000000..a6aa2525 --- /dev/null +++ b/img/heart-active.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/heart.svg b/img/heart.svg new file mode 100644 index 00000000..e38acbc3 --- /dev/null +++ b/img/heart.svg @@ -0,0 +1,3 @@ + + + diff --git a/includes/functions.php b/includes/functions.php new file mode 100644 index 00000000..8ea031d4 --- /dev/null +++ b/includes/functions.php @@ -0,0 +1,92 @@ +prefix . 'liked'; + + $query = $wpdb->prepare("SELECT * FROM $table_name WHERE id_post = %d AND id_user = %d", $post_id, $user_id); + $already_liked = $wpdb->get_row($query); + + $active = ''; + $liked = 'false'; + if($already_liked){ + $active = '-active'; + $liked = 'true'; + } + + if (is_singular('post')) { + + if(!is_user_logged_in()){ + $content = "
funcionalidade de like somente para usuários cadastrados
"; + return $content; + } + + $img_url = plugin_dir_url(dirname(__FILE__)) . "img/heart$active.svg"; + $img_html = '
like
'; + $content .= $img_html; + } + + return $content; +} +add_filter('the_content', 'add_text_after_content'); + +// Função para adicionar o like +function register_like() { + + if (isset($_POST['post_id']) && isset($_POST['user_id']) && isset($_POST['is_liked'])) { + global $wpdb; + + $table_name = $wpdb->prefix . 'liked'; + + $post_id = $_POST['post_id']; + $user_id = $_POST['user_id']; + $is_liked = $_POST['is_liked']; + + if($is_liked == "true"){ + $where = array( + 'id_user' => $user_id, + 'id_post' => $post_id + ); + $wpdb->delete($table_name, $where); + wp_send_json(array( + 'success' => true, + 'message' => 'disliked' + )); + return false; + + } + + $wpdb->insert( + $table_name, + array( + 'id_post' => $post_id, + 'id_user' => $user_id + ) + ); + + wp_send_json(array( + 'success' => true, + 'message' => 'liked' + )); + + } else { + + wp_send_json(array( + 'success' => false, + 'message' => 'deu b.o' + )); + + } + + wp_die(); +} + +// Hook para adicionar a função no arquivo admin-ajax.php +add_action('wp_ajax_register_like', 'register_like'); +add_action('wp_ajax_nopriv_register_like', 'register_like'); diff --git a/includes/install.php b/includes/install.php new file mode 100644 index 00000000..4340dee6 --- /dev/null +++ b/includes/install.php @@ -0,0 +1,18 @@ +prefix . 'liked'; // Prefixo do WordPress + nome da tabela + + $sql = "CREATE TABLE IF NOT EXISTS $nome_tabela ( + id INT NOT NULL AUTO_INCREMENT, + id_post INT NOT NULL, + id_user INT NOT NULL, + PRIMARY KEY (id) + )"; + + $wpdb->query($sql); +} + +register_activation_hook( __FILE__, 'create_custom_table' ); \ No newline at end of file diff --git a/js/script.js b/js/script.js new file mode 100644 index 00000000..072bdd3c --- /dev/null +++ b/js/script.js @@ -0,0 +1,39 @@ +jQuery(document).ready(function ($) { + $(".likeImg").click(function () { + let postID = $(this).data("post-id"); + let userID = $(this).data("user-id"); + let liked = $(this).data("liked"); + + let data = { + action: "register_like", + post_id: postID, + user_id: userID, + is_liked: liked, + }; + // console.log(liked); + // console.log(myAjax); + + $.post(myAjax.ajaxurl, data, function (response) { + // console.log(response); + if (response.success == true) { + if (response.message == "disliked") { + // console.log("tirar active"); + $(".likeImg").attr("src", myAjax.imgUrl + "heart.svg"); + $(".likeImg").data("liked", "false"); + return false; + } + + if (response.message == "liked") { + // console.log("mudar para active"); + $(".likeImg").attr("src", myAjax.imgUrl + "heart-active.svg"); + $(".likeImg").data("liked", "true"); + return false; + } + } + + if (response.success == false) { + alert(response.message); + } + }); + }); +}); diff --git a/like.php b/like.php new file mode 100644 index 00000000..b30b841c --- /dev/null +++ b/like.php @@ -0,0 +1,35 @@ + admin_url('admin-ajax.php'), + 'imgUrl' => plugin_dir_url(dirname(__FILE__)) . "like/img/" + ); + wp_localize_script('like-js', 'myAjax', $paths); +} +add_action('wp_enqueue_scripts', 'enqueue_scripts'); + + +require_once plugin_dir_path(__FILE__) . 'includes/functions.php'; + + + + +