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

Tạo trang quản lý bài viết cho thành viên WordPress
4.3 (86.67%) 12 votes
Tạo trang quản lý bài viết cho thành viên WordPress

Ở 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.

tao-trang-quan-ly-bai-viet-wordpress
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):

Tạo trang quản lý bài viết cho thành viên WordPress

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

    • 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

      <?php echo wp_delete_post_link($postid); ?>

Bình luận bài viết

Bạn có thể dùng các thẻ HTML này:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

X

Tạo live chat facebook cho website

Bạn cần tư vấn ?