Ajax là một kỹ thuật khá phổ biến trong lập trình web. Đối với bản thân mình khi mới bắt đầu lập trình wordpress thật sự là rất sợ ajax, không biết vì lý do chi mà cứ đụng đến ajax mình lại chuyển hướng tìm phương án khác hoặc nhờ người khác làm 😀
Nhưng cuối cùng mình cũng không thể tránh mãi được, mình bắt đầu tìm hiểu và thấy ajax không phải là thứ chi đó kinh khủng như mình tưởng tượng và chỉ mất 1 tuần mình đã tự xây được những chức năng mượt mà nhờ ajax. Bài viết hôm nay mình sẽ hướng dẫn cho các bạn cách sử dung ajax trong wordpress một cách đơn giản nhất.
Ajax là một kỹ thuật trong javaScript, Ajax giúp việc truyền dữ liệu từ backend ra frontend hoặc ngược lại mà không cần load trang. Ví dụ như submit form mà không load lại trang (Contact form 7).
Trên blog của mình các bạn để ý thấy phần comment cho bài viết cũng sumbit form mà không load lại trang, hoặc phần tìm kiếm của website mình nó cũng tự động load những kết quả khi các bạn đánh từ khoá… Tất cả những chức năng đó mình đang sử dụng ajax.
Để hiểu và làm được ajax trong wordpress bạn cần có kiến thức cơ bản về javascript, jquery và một tý kiến thức về lập trình theme wordpress nha!.
Để các bạn dễ hình dung và thực hành, mình sẽ đưa ra một ví dụ cụ thể như sau: Trên giao diện website sẽ hiện 1 button, khi click vào button đó nó sẽ hiện ra 5 bài viết ngẫu nhiên, mỗi lần click lại button đó nó sẽ hiện ra 5 bài khác và tất nhiên nó sẽ ko load lại trang.
Bay giờ mình sẽ chia nội dung kiến thức này ra làm 2 phần:
– Hiển thị button để click
<div class="content-widget"> <button class="call-ajax">Bài viết ngẫu nhiên</button> <div class="display-post"></div> </div>
Trong đó <div class=”display-post”></div> chứa nội dung trả về từ server.
– Gởi dữ liệu cho server và nhận giá trị trả về!
$(document).ready(function(){ $('.call-ajax').click(function(){ // Khi click vào button thì sẽ gọi hàm ajax $.ajax({ // Hàm ajax type : "post", //Phương thức truyền post hoặc get dataType : "html", //Dạng dữ liệu trả về xml, json, script, or html url : '<?php echo admin_url('admin-ajax.php');?>', // Nơi xử lý dữ liệu data : { action: "random", //Tên action, dữ liệu gởi lên cho server }, beforeSend: function(){ // Có thể thực hiện công việc load hình ảnh quay quay trước khi đổ dữ liệu ra }, success: function(response) { //Làm gì đó khi dữ liệu đã được xử lý $('.display-post').html(response); // Đổ dữ liệu trả về vào thẻ <div class="display-post"></div> }, error: function( jqXHR, textStatus, errorThrown ){ //Làm gì đó khi có lỗi xảy ra console.log( 'The following error occured: ' + textStatus, errorThrown ); } }); }); });
Thông thường đoạn code được nằm ở file footer.php của theme.
Đoạn code trên thì frontend sẽ gởi cho backend dữ liệu là data. Dữ liệu của ‘data’ được gởi dưới dạng key và value nhé. Chúng ta có thể gởi một lần nhiều giá trị lên cho server xử lý. Trong trường hợp ví dụ này mình gởi lên một action có tên là ‘random‘.
Thêm đoạn code này trong file functions.php của theme nhé!
<?php add_action('wp_ajax_random', 'random_function'); add_action('wp_ajax_nopriv_random', 'random_function'); function random_function() { echo '<ul>'; $getposts = new WP_query(); $getposts->query('post_status=publish&showposts=5&orderby=rand'); global $wp_query; $wp_query->in_the_loop = true; while ($getposts->have_posts()) : $getposts->the_post(); echo '<li>'; echo '<a href="'.get_the_permalink().'">'.get_the_title().'</a>'; echo '</li>'; endwhile; wp_reset_postdata(); echo '</ul>'; die(); } ?>
Giải thích:
Sau khi đã code xong chức năng, các bạn ra ngoài giao diện test nếu kết quả được như phía dưới là thành công:
<div class="display-post"> <ul> <li><a href="link">text text</li> <li><a href="link">text text</li> <li><a href="link">text text</li> <li><a href="link">text text</li> <li><a href="link">text text</li> </ul> </div>
Để hiểu hơn các bạn có thể xem video bên dưới:
Hôm nay mình đã hướng dẫn cho bạn cơn bản về ajax trong wordpress, hy vọng nó sẽ giúp ích cho các bạn trong những dự án sắp tới. Sau bài viết này mình sẽ có khoản 3 4 bài viết thực hành ajax trong wordpress các bạn nhớ chú ý theo dõi nhé.
Cảm ơn các bạn đã ghé thăm blog. Chúc các bạn thành công!
Fonttiengviet.com là một dự án website do JKS thực hiện cho khách hàng Huy Academy.…
Chắc chắn nhiều anh em khi đọc bài viết này sẽ nghĩ tôi đang quảng…
Widget trong WordPress là một công cụ mạnh mẽ cho phép bạn dễ dàng thêm…
Hôm nay mình sẽ hướng dẫn cho anh em cách tạo website blog cực kỳ…
Sống cực tốt anh em ạ :D Sau nhiều năm gắng bó với nghề thiết…
Nhân dịp quay lại viết blog mình share cho anh em code mẫu website blog…
View Comments
hay ghê
file admin-ajax.php viết ra hay có có sẵn nhỉ mình chưa hiểu
File admin-ajax.php có sẵn trong code rồi bạn!
Cảm ơn bạn!
url trong code AJAX bạn có lỗi nhé, ai ko biết copy sẽ ko xài đc :D
url : '<?php echo admin_url('admin-ajax.php');?>', // Nơi xử lý dữ liệu
bạn nói rõ lỗi ở đâu được không. mình làm theo cũng thấy báo lỗi
nghe Anh giới thiệu nên Em test thử coi có bị load lại form k
Kết quả có bị load form không =))
bạn cho mình hỏi nếu mình tạo một table trong database của wordpress thì truy vấn như thế nào
Bạn dùng lớp wpdb của wordpress để query nha bạn! Mình sắp có bài hướng dẫn với chủ đề này!
cho mình hỏi nếu cache thì phải xử lý ajax ra sao bạn ơi
cảm ơn bạn
cảm ơn bạn
Cảm ơn bạn