Tạo trang quản lý bài viết cho thành viên WordPress
Tạo trang quản lý bài viết cho thành viên Wordpress một cách đơn giản, giúp thành viên quản lý bài viết của mình ngay bên ngoài trang chủ dễ dàng tiện lợi
Ở bài trước trong Serie Tạo và quản lý bài viết Front End không dùng Plugin, chúng ta đã giúp thành viên WordPress đăng bài ngay ngoài trang chủ, vậy tiếp theo chúng ta cần tạo 1 trang cho phép thành viên xem và quản lý các bài viết của mình.
Tạo trang quản lý bài viết cho thành viên WordPress
– Đầu tiên bạn cần tạo 1 file quản lý bài viết : quan-ly-bai-viet.php
Mình sẽ tách nhỏ và giải thích từng đoạn trong file này, rồi gộp thành 1 file hoàn chỉnh ở cuối bài
– Tạo template : Quản lý bài viết
<?php /* Template Name: Quản lý bài viết */ ?>
– Kiểm tra thành viên đã đăng nhập hay chưa nếu đã đăng nhập thì lấy thông tin thành viên hiện tại, nếu chưa sẽ hiện form đăng nhập:
<?php if(is_user_logged_in()) { $current_user = wp_get_current_user(); $current_user->user_login; $userid = $current_user->ID; ?> // form Quản lý bài viết <?php } else { ?> <div class="formdangnhap"> <?php wp_login_form(); ?> </div> <?php } ?>
– Tạo Form Quản Lý Bài Viết
<h4><i class="fa fa-tasks"></i> <?php echo $current_user->display_name; ?> Quản lý bài</h4> <a style="color:#fff;margin:10px 0;" href="<?php bloginfo("url");?>/dang-bai.html" class="btn btn-primary" role="button"><i class="fa fa-pencil"></i> Viết bài</a> <table class="table table-bordered"> <thead> <tr class="vnkings_hd"> <th>Tiêu đề</th> <th>Trạng thái</th> <th>Chỉnh sửa</th> </tr> </thead> <tbody> <?php $vnkings = new WP_Query(array( 'post_status' => array('publish', 'pending'), 'orderby' => 'ID', 'order' => 'DESC', 'author' => $userid, 'paged' => get_query_var('paged'), 'posts_per_page'=> 10)); ?> <?php while ($vnkings->have_posts()) : $vnkings->the_post(); ?> <?php $postid = get_the_ID(); ?> <tr class="vnkings_mn"> <td><a target="_blank" class="vnk1" href="<?php the_permalink() ;?>"><?php the_title() ;?></a></td> <td><span class="vnk2"><?php $stt = get_post_status($postid); if($stt=="publish"){ echo "Đang mở"; } else {echo "Chờ duyệt"; } ?></span></td> <td><a target="_blank" class="vnk3" href="<?php bloginfo('url');?>/sua-bai.html?id=<?php echo $postid;?>"><i class="fa fa-pencil-square-o"></i> Sửa</a></td> </tr> <?php endwhile ; wp_reset_query() ;?> <?php if (function_exists('wp_pagenavi')) { wp_pagenavi( array( 'query' => $vnkings ) ); } ?> </tbody> </table>
– Giải thích đoạn code trên:
- $userid = $current_user->ID; : lấy ID của thành viên đang đăng nhập
- $vnkings = new WP_Query(array()) : Tạo Query Post
- ‘post_status’ => array(‘publish’, ‘pending’) : Lấy tất cả các bài viết có trạng thái là Publish và Pending
- orderby ID order DESC : Lấy bài viết theo danh sách mới tới cũ
- ‘author’ => $userid : lấy bài viết có tác giả là $userid
- ‘paged’ => get_query_var(‘paged’) : Tạo phân trang
- ‘posts_per_page’=> 10 : lấy 10 bài viết trên 1 trang
- wp_pagenavi : Tạo phân trang cho Query Post $vnkings bên trên
Lưu ý có 1 phần sua-bai.html mình sẽ hướng dẫn cụ thể tạo trang sửa bài viết trong bài tiếp theo
– Tổng kết lại đoạn code trong file quan-ly-bai-viet.php
<?php /* Template Name: Quản lý bài viết */ ?> <div class="vnkings_form col-md-12"> <?php if(is_user_logged_in()) { $current_user = wp_get_current_user(); $current_user->user_login; $userid = $current_user->ID; ?> <h4><i class="fa fa-tasks"></i> <?php echo $current_user->display_name; ?> Quản lý bài</h4> <a style="color:#fff;margin:10px 0;" href="<?php bloginfo("url");?>/dang-bai.html" class="btn btn-primary" role="button"> <i class="fa fa-pencil"></i> Viết bài </a> <table class="table table-bordered"> <thead> <tr class="vnkings_hd"> <th>Tiêu đề</th> <th>Trạng thái</th> <th>Chỉnh sửa</th> </tr> </thead> <tbody> <?php $vnkings = new WP_Query(array( 'post_status' => array('publish', 'pending'), 'orderby' => 'ID', 'order' => 'DESC', 'author' => $userid, 'paged' => get_query_var('paged'), 'posts_per_page'=> 10)); ?> <?php while ($vnkings->have_posts()) : $vnkings->the_post(); ?> <?php $postid = get_the_ID(); ?> <tr class="vnkings_mn"> <td><a target="_blank" class="vnk1" href="<?php the_permalink() ;?>"><?php the_title() ;?></a></td> <td><span class="vnk2"><?php $stt = get_post_status($postid); if($stt=="publish"){ echo "Đang mở"; } else {echo "Chờ duyệt"; } ?></span></td> <td><a target="_blank" class="vnk3" href="<?php bloginfo('url');?>/sua-bai.html?id=<?php echo $postid;?>"><i class="fa fa-pencil-square-o"></i> Sửa</a></td> </tr> <?php endwhile ; wp_reset_query() ;?> </tbody> </table> <?php if (function_exists('wp_pagenavi')) { wp_pagenavi( array( 'query' => $vnkings ) ); } ?> <?php } else { ?> <div class="formdangnhap"> <div class="alert alert-warning"><strong>Bạn</strong> cần đăng nhập để quản lý bài của mình!</div> <?php wp_login_form(); ?> </div> <?php } ?> </div>
– Cuối cùng là bạn vào Trang quản trị > Trang > Tạo trang > Quản lý bài viết (chọn template là Quản lý bài viết):
Bây giờ bạn vào trang domain/quan-ly-bai-viet thể xem thành quả của mình rồi.
Nếu bạn có điều gì chưa hiểu, xin vui lòng đặt câu hỏi hoặc bình luận ở phía cuối bài.
Chúc các bạn thành công
Bài liên quan
- Đưa trình soạn thảo WordPress 5.0 về phiên bản cũ không dùng plugin
- Thêm chức năng lọc theo Meta Fields trong Dashboard WordPress
- Sửa lỗi không hiển thị Page Template để chọn khi tạo Trang ở WordPress version 4.9
- Thêm reCAPTCHA vào form đăng nhập đăng ký WordPress
- Quản lý thời gian hoạt động cho Vip Member trong WordPress
- Hiển thị bài viết mới theo Category trong WordPress
- Tự tùy biến trang Single theo Category trong WordPress
- Tạo giao diện khác nhau cho từng Category trong WordPress
Bài viết rất hay, hy vọng sẽ có nhiều bài hay như vậy
Cảm ơn ý kiến của bạn, Chúc bạn có những phút giây thật bổ ích tại Vnkings!
Thank VNKIng nhiều nhé !!!
Vâng bạn 🙂
Bạn cho mình hỏi là muốn thêm trường xóa thì thêm như nào ạ
Bạn để ý trong table có các trường sửa, thêm
Bạn thêm 1 thẻ vào td table và cho đoạn này vào nhé : đây chính là link xóa bài
Bạn có cái file css không ? cho mình với, mình không rành về cái này.
Của mình nó không hiện phân trang :
$vnkings ) ); } ?>
Mình cũng gặp trượng hợp tương tự không phân trang và đã có file sua-bai.php nhưng không kết nối được. Mình đang đứng ở bước này. Ad hổ trợ giúp nhé
thanks ad. rất hay
thêm ảnh đại diện cho bài viết nữa thì thế nào vậy ad.
Em cũng bị tình trạng không hiện phân trang, anh xem giúp em với 🙁
AD cho mình xin code của hàm wp_pagenavi() với. Mình không làm được phần phân trang. Cảm ơn AD
Chào bạn, hàm đó mình dùng Plugin WP-PageNavi bạn nhé, bạn cài lên là được.
Chào bạn
còn thiếu gì mà nó không phân được trang bạn ơi
hỗ trợ giúp
Chào bạn, bạn đã cài plugin wp_pagenavi chưa?