Chức năng đánh giá bài viết là một tính năng hữu ích giúp người dùng có thể chia sẻ ý kiến của họ về nội dung của bạn. Việc này không chỉ giúp cải thiện trải nghiệm người dùng mà còn tạo ra sự tương tác và tăng độ tin cậy cho bài viết của bạn. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách thêm chức năng đánh giá bài viết vào theme WordPress mà không cần sử dụng plugin.
Dưới đây là các bước chi tiết để bạn thêm chức năng đánh giá bài viết vào website WordPress của mình:
Trước tiên, bạn cần tạo một bảng trong cơ sở dữ liệu để lưu trữ thông tin đánh giá. Thêm mã sau vào tệp functions.php
của theme bạn
function create_rating_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'post_ratings';
$charset_collate = $wpdb->get_charset_collate();
// Kiểm tra nếu bảng chưa tồn tại
if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
post_id mediumint(9) NOT NULL,
rating tinyint(1) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
}
add_action('after_setup_theme', 'create_rating_table');
Thêm đoạn mã sau vào tệp single.php
(hoặc nơi bạn muốn hiển thị form đánh giá)
function display_rating_form($post_id) {
?>
<div class="rating-form">
<h3>Đánh giá bài viết</h3>
<form method="post">
<input type="hidden" name="post_id" value="<?php echo $post_id; ?>">
<label for="rating">Đánh giá:</label>
<select name="rating" required>
<option value="">Chọn đánh giá</option>
<option value="1">1 sao</option>
<option value="2">2 sao</option>
<option value="3">3 sao</option>
<option value="4">4 sao</option>
<option value="5">5 sao</option>
</select>
<input type="submit" name="submit_rating" value="Gửi đánh giá">
</form>
</div>
<?php
}
if (have_posts()) {
while (have_posts()) {
the_post();
display_rating_form(get_the_ID());
}
}
Thêm mã sau vào tệp functions.php
để xử lý việc gửi đánh giá
function handle_rating_submission() {
if (isset($_POST['submit_rating'])) {
global $wpdb;
$post_id = intval($_POST['post_id']);
$rating = intval($_POST['rating']);
if ($post_id > 0 && $rating > 0) {
$table_name = $wpdb->prefix . 'post_ratings';
$wpdb->insert($table_name, array('post_id' => $post_id, 'rating' => $rating));
}
}
}
add_action('wp_head', 'handle_rating_submission');
Cuối cùng, bạn có thể thêm mã sau vào tệp single.php
để hiển thị điểm trung bình đánh giá cho bài viết
function display_average_rating($post_id) {
global $wpdb;
$table_name = $wpdb->prefix . 'post_ratings';
$average_rating = $wpdb->get_var("SELECT AVG(rating) FROM $table_name WHERE post_id = $post_id");
if ($average_rating) {
echo '<p>Điểm trung bình đánh giá: ' . round($average_rating, 2) . ' sao</p>';
}
}
if (have_posts()) {
while (have_posts()) {
the_post();
display_average_rating(get_the_ID());
}
}
Việc thêm chức năng đánh giá bài viết vào theme WordPress của bạn là một cách hiệu quả để tương tác với người dùng và cải thiện nội dung của bạn. Hãy áp dụng ngay hôm nay để tối ưu hóa trải nghiệm người dùng trên website của bạn!