Tạo trang chỉnh sửa bài viết WordPress không dùng Plugin

tao trang sua bai wordpress vnkings 2

Chào các bạn, ở 2 bài trước Mình đã giúp các Bạn tự tạo Trang Đăng bàiTrang quản lý bài cho thành viên, Tiếp theo mình sẽ giúp các bạn tạo trang sửa bài viết của thành viên đã đăng lên.

Tạo trang chỉnh sửa bài viết WordPress không dùng Plugin

Đầu tiên bạn cần tạo file sua-bai.php

Trong file này bạn cần có các nội dung sau:

– Kiểm tra thành viên đã được đăng nhập hay chưa, nếu chưa thì hiển thị khung đăng nhập

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
/*
 Template Name: Sửa bài
 */
 ?>
<?php if(is_user_logged_in()) {
$user_id = get_current_user_id();
$current_user = wp_get_current_user();
$vnkings $current_user->user_level;
if($vnkings <= 2) { $vnstatus = "pending"; } else { $vnstatus = "publish"; }
?>
// form Sửa bài
<?php } else { ?>
<div class="formdangnhap">
    <?php wp_login_form(); ?>           
</div>
<?php } ?>

– Thêm Form sửa bài viết (form mình đang sử dụng cấu trúc của Boostrap để các bạn tùy biến)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php $idvnkings = addslashes( $_GET['id'] ); ?>
<form id="new_post" class="form-horizontal" method="post" action="" enctype="multipart/form-data">
    <div class="form-group vnking_pd col-sm-12 col-md-6">
        <label for="post_title">Tiêu đề</label>
        <input type="text" name="post_title" value="<?php echo get_the_title($idvnkings) ;?>" class="form-control" placeholder="Tiêu đề">
    </div>
    
    <div class="form-group vnking_pd pd_0">
      <label for="post_content">Nội Dung</label>
      <?php
        $post = get_post( $idvnkings, OBJECT, 'edit' );
        $content = $post->post_content;
        wp_editor( $content, 'userpostcontent', array( 'textarea_name' => 'post_content' ));?>
    </div>
    <div class="form-group vnking_pd col-md-6">
        <?php
        $cats = get_the_category( $idvnkings);
        $selected = 0;
        if( $cats ) {
        $selected = $cats[0]->term_id;
        }
        ?>
      <label for="post_content">Danh mục</label>
        <?php
        wp_dropdown_categories( array(
        'orderby'    => 'title',
        'hide_empty' => false,
        'id'         => 'Posts_Picture_category',
        'class'      => 'form-control',
        'name' =>      'post_category',
        'selected'   => $selected
            ) );
        ?>
    </div>
    <div class="form-group vnking_pd col-md-6">
      <label for="post_tags">Từ khóa</label>
      <input type="text" name="post_tags" value="<?php echo $tagslist; ?>" class="form-control" placeholder="Từ khóa">
    </div>
    
    <div style="clear:both;"></div>
    <div class="form-group">
        <?php
            $feat_image = wp_get_attachment_url( get_post_thumbnail_id($idvnkings) );
        ?>
        <p><img style="max-width:300px; display:block;" id="output_avatar" src="<?php echo $feat_image;?>"/></p>
        
        <script>
          var loadFile = function(event) {
            var output = document.getElementById('output_avatar');
            output.src = URL.createObjectURL(event.target.files[0]);
             $('#output_avatar').addClass('active-avatar');
          };
        </script>
        <span class="btn btn-default btn-file">Hình ảnh bài viết <input class="input-file" accept="image/*" name="file" type="file" class="file" onchange="loadFile(event)">
        </span>
    </div>
    <input type="hidden" name="add_new_post" value="post" />
    <?php wp_nonce_field( 'post_nonce', 'post_nonce_field' ); ?>
    <div class="form-group">
        <div class="col-sm-12" style="padding-left:0;">
          <button type="submit" class="btn btn-primary">Sửa Bài</button>
        </div>
    </div>
</form>

Giải thích đoạn code

  • $idvnkings = addslashes($_GET[‘id’]) : Bạn hãy để ý đường dẫn khi click vào sửa bài ở trang quản lý bài viết sẽ có dạng : domain/sua-bai.html?id=60 vậy với đoạn code trên bạn sẽ lấy được id bài viết cần sửa Tạo trang chỉnh sửa bài viết WordPress không dùng Plugin
  • $post = get_post() : Lấy thông tin bài viết
  • $content = $post->post_content : Lấy nội dung bài viết
  • wp_editor() : Khung viết bài của wordpress
  • $feat_image : Lấy ảnh đại diện của bài viết
  • $tagslist; : Lấy Tags bài viết
  • wp_nonce_field() : Bảo mật cho form bài viết, giúp chứng thực sự hoạt động của người dùng nếu form đăng bài gửi đi

– Xử lý dữ liệu khi ấn vào sửa bài viết

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' && !empty( $_POST['add_new_post'] ) && current_user_can('level_0') && isset( $_POST['post_nonce_field'] ) && wp_verify_nonce( $_POST['post_nonce_field'], 'post_nonce' )) {
if (isset($_POST['post_title'])) {
    $post_title = $_POST['post_title'];
}
if (isset($_POST['post_content'])) {
    $post_content = $_POST['post_content'];
}
else {
    echo 'Please enter the content';
}
if (isset ($_POST['post_category'])) {
    $post_category = $_POST['post_category'];
} else {
    $post_category = 1;
}
if (isset($_POST['post_tags'])) {
    $post_tags = $_POST['post_tags'];
}
$post = array(
'ID' => $idvnkings,
'post_title'    => wp_strip_all_tags($post_title),
'post_content'  => $post_content,
'post_category' => array($post_category),
'tags_input'    => $post_tags,
'post_type' => 'post',
'post_status'   => $vnstatus2,
);
$lovendpost_id_edit = wp_insert_post($post);
if ($_FILES) {
    foreach ($_FILES as $file => $array) {
    $newupload = insert_attachment($file,$lovendpost_id_edit);
    }
}
echo '<div class="alert alert-success"><strong>Sửa bài Thành Công!</strong> <a href="'. get_permalink($idvnkings). '"> Xem Bài!</a></div>';
} ?>

Vậy tổng kết lại ta sẽ có 1 file sua-bai.php như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
/*
 Template Name: Sửa bài
 */
 ?>
 
 <div class="vnkings_form col-md-12">
<?php if(is_user_logged_in()) { ?>
<?php   
$idvnkings = addslashes( $_GET['id'] ); 
$post_tags = wp_get_post_tags($idvnkings); $tagsarray = array();
$vnstatus2 = get_post_status($idvnkings);
foreach ($post_tags as $tag) {
    $tagsarray[] = $tag->name;
}
$tagslist = implode( ', ', $tagsarray );
?>
<?php
$current_user = wp_get_current_user(); $userid = $current_user->ID; $curpost = get_post( $idvnkings );
$userlevel = $current_user->user_level;
//has permission?
$lovenduser = $curpost->post_author;
if ($userid == $lovenduser || $userlevel > 2 ) { ?>
    <?php if( $_SERVER['REQUEST_METHOD'] == 'POST' && !empty( $_POST['add_new_post'] ) && current_user_can('level_0') && isset( $_POST['post_nonce_field'] ) && wp_verify_nonce( $_POST['post_nonce_field'], 'post_nonce' )) {
            if (isset($_POST['post_title'])) {
                $post_title = $_POST['post_title'];
            }
            if (isset($_POST['post_content'])) {
                $post_content = $_POST['post_content'];
            }
            else {
                echo 'Please enter the content';
            }
            if (isset ($_POST['post_category'])) {
                $post_category = $_POST['post_category'];
            } else {
                $post_category = 1;
            }
            if (isset($_POST['post_tags'])) {
                $post_tags = $_POST['post_tags'];
            }
            
            $post = array(
            'ID' => $idvnkings,
            'post_title'    => wp_strip_all_tags($post_title),
            'post_content'  => $post_content,
            'post_category' => array($post_category),
            'tags_input'    => $post_tags,
            'post_type' => 'post',
            'post_status'   => $vnstatus2,
            );
            $lovendpost_id_edit = wp_insert_post($post);
            
            if ($_FILES) {
                foreach ($_FILES as $file => $array) {
                $newupload = insert_attachment($file,$lovendpost_id_edit);
                }
            }
            echo '<div class="alert alert-success"><strong>Sửa bài Thành Công!</strong> <a href="'. get_permalink($idvnkings). '"> Xem Bài!</a></div>';
        } ?>
        <div id="postBox">
            <form id="new_post" class="form-horizontal" method="post" action="" enctype="multipart/form-data">
                <div class="form-group vnking_pd col-sm-12 col-md-6">
                    <label for="post_title">Tiêu đề</label>
                    <input type="text" name="post_title" value="<?php echo get_the_title($idvnkings) ;?>" class="form-control" placeholder="Tiêu đề">
                </div>
                
                <div class="form-group vnking_pd pd_0">
                  <label for="post_content">Nội Dung</label>
                  <?php
                    $post = get_post( $idvnkings, OBJECT, 'edit' );
                    $content = $post->post_content;
                    wp_editor( $content, 'userpostcontent', array( 'textarea_name' => 'post_content' ));?>
                </div>
                <div class="form-group vnking_pd col-md-6">
                    <?php
                    $cats = get_the_category( $idvnkings);
                    $selected = 0;
                    if( $cats ) {
                    $selected = $cats[0]->term_id;
                    }
                    ?>
                  <label for="post_content">Danh mục</label>
                    <?php
                    wp_dropdown_categories( array(
                    'orderby'    => 'title',
                    'hide_empty' => false,
                    'id'         => 'Posts_Picture_category',
                    'class'      => 'form-control',
                    'name' =>      'post_category',
                    'selected'   => $selected
                        ) );
                    ?>
                </div>
                <div class="form-group vnking_pd col-md-6">
                  <label for="post_tags">Từ khóa</label>
                  <input type="text" name="post_tags" value="<?php echo $tagslist; ?>" class="form-control" placeholder="Từ khóa">
                </div>
                
                <div style="clear:both;"></div>
                <div class="form-group">
                    <?php
                        $feat_image = wp_get_attachment_url( get_post_thumbnail_id($idvnkings) );
                    ?>
                    <p><img style="max-width:300px; display:block;" id="output_avatar" src="<?php echo $feat_image;?>"/></p>
                    
                    <script>
                      var loadFile = function(event) {
                        var output = document.getElementById('output_avatar');
                        output.src = URL.createObjectURL(event.target.files[0]);
                         $('#output_avatar').addClass('active-avatar');
                      };
                    </script>
                    <span class="btn btn-default btn-file">Hình ảnh bài viết <input class="input-file" accept="image/*" name="file" type="file" class="file" onchange="loadFile(event)">
                    </span>
                </div>
                <input type="hidden" name="add_new_post" value="post" />
                <?php wp_nonce_field( 'post_nonce', 'post_nonce_field' ); ?>
                <div class="form-group">
                    <div class="col-sm-12" style="padding-left:0;">
                      <button type="submit" class="btn btn-primary">Sửa Bài</button>
                    </div>
                </div>
            </form>
        </div>
<?php } else { ?>
<div class="alert alert-warning"><strong>Bạn</strong> không có quyền Sửa bài viết này!</div>
<?php }?>
<?php } else { ?>
<div class="formdangnhap">
    <div class="alert alert-warning"><strong>Bạn</strong> cần đăng nhập để sửa bài!</div>
        <?php wp_login_form(); ?>        
</div>
<?php } ?>
</div>

Trong quá trình thực hiện nếu bạn chưa hiểu hoặc khó thực hiện bạn có thể gửi câu hỏi ở bên dưới khung bình luận, mình sẽ cùng bạn hiểu rõ về nó!

Chúc các bạn thành công!

Nguồn : wordpress.vnkings.com

0938.54.84.99