Tạo trang đăng bài cho thành viên wordpress không cần plugin

Tạo trang đăng bài cho thành viên wordpress không cần plugin một cách chuyên nghiêp dễ dàng tùy biến theo ý muốn.

Tạo trang đăng bài cho thành viên wordpress không cần plugin
4.8 (95%) 32 votes
Tạo trang đăng bài cho thành viên wordpress không cần plugin
Có khá nhiều bạn quan tâm đến vấn đề tạo trang đăng bài cho thành viên như ở Vnkings.Com vậy nên trong bài viết này Mình sẽ giúp các bạn tạo được 1 trang đăng bài như thế một cách đơn giản nhất.

Tạo trang đăng bài cho thành viên wordpress không cần plugin

Ưu điểm Tạo trang đăng bài cho thành viên wordpress không cần plugin :

  • Dễ dàng tùy biến theo ý muốn
  • không sử dụng quá nhiều trường không cần thiết khi đăng bài
  • Không cần sử dụng javascript như Plugin, giúp cho Website bạn load nhẹ hơn

 
Nhược điểm

  • Bạn cần có 1 chút kiến thức cơ bản về html,php nếu muốn hiểu hơn về cách làm trang này.

 

Bắt đầu nào :

Đầu tiên Bạn cần tạo 1 file đăng bài: dang-bai.php
Mình sẽ viết và giải thích từng phần. Sau đó sẽ có 1 file hoàn tất.

 

– kiểm tra xem thành viên đã đăng ký hay chưa, nếu đã đăng ký thì lấy thông tin thành viên, ngược lại nếu chưa đăng ký thì hiện khung đăng nhập:

<?php
/*
 Template Name: Đăng 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 đăng bài
<?php } else { ?>
<div class="formdangnhap">
    <?php wp_login_form(); ?>            
</div>
<?php } ?>

Giải thích đoạn code :

  • Template Name: Đăng bài : Tạo template Đăng bài.
  • if(is_user_logged_in()) { : Nếu là thành viên đăng nhập.
  • $user_id = get_current_user_id(); : Lấy id của thành viên.
  • $current_user = wp_get_current_user(); : Lấy tất cả thông tin thành viên.
  • $vnkings = $current_user->user_level; : Lấy User level.
  • if($vnkings <= 2) { $vnstatus = “pending”; } else { $vnstatus = “publish”; } : Kiểm tra user đang là quyền gì, nếu là Thành viên đăng ký thì bài viết sẽ được cho vào dạng chờ xét duyệt, nếu là Tác giả trở lên thì cho phép Public bài viết luôn.
  • wp_login_form(); : form đăng nhập mặc định của wordpress

 

-Thêm form đăng bài : trong form này mình đã tạo theo cấu trúc của Bootstrap cho các bạn dễ tùy biến.

<div id="vnkings_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" 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_obj = $wp_query->get_queried_object(); wp_editor( $post_obj->post_content, 'userpostcontent', array( 'textarea_name' => 'post_content' ));?>
		</div>
		<div class="form-group vnking_pd col-md-6">
		  <label for="post_content">Danh mục</label>
			<?php $categories = wp_dropdown_categories("echo=0&hide_empty=0&selected=0");
				preg_match_all('/s*<option class="(S*)" value="(S*)">(.*)</option>s*/', $categories, $matches, PREG_SET_ORDER);
				echo "<select id='post_category' class='form-control' name='post_category'>";
				foreach ($matches as $match){
				echo "<option value='{$match[2]}'>{$match[3]}</option>";
				}
				echo "</select><br />n";
			?>
		</div>
		<div class="form-group vnking_pd col-md-6">
		  <label for="post_tags">Từ khóa</label>
		  <input type="text" name="post_tags" class="form-control" placeholder="Từ khóa">
		</div>
		<div class="form-group">
			<p><img id="output_avatar"/></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">Đăng Bài</button>
			</div>
		</div>
	</form>
</div>

Giải thích đoạn code :

Trong form này các bạn cần tạo các trường cơ bản như :

  • input name=”post_title” :Nhập Tiêu đề
  • wp_editor() :Tạo Form nội dung mặc định của WordPress
  • wp_dropdown_categories() : Chọn danh mục cho bài viết của bạn
  • input name=”post_tags” : Nhập tags bài viết
  • input name=”file” : Tạo ảnh đại diện 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

 
– Kiểm tra dữ liệu và đăng bài viết

<?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'];
}
if (isset($_POST['post_tags'])) {
	$post_tags = $_POST['post_tags'];
}
$post = array(
	'post_title'    => wp_strip_all_tags($post_title),
	'post_content'  => $post_content,
	'post_category' => array($post_category),
	'tags_input'    => $post_tags,
	'post_status'   => $vnstatus,
	'post_type' => 'post',
);
$vnkings_post_id = wp_insert_post($post);

if ($_FILES) {
	foreach ($_FILES as $file => $array) {
	$newupload = insert_attachment($file,$vnkings_post_id);
	}
}
echo '<div class="alert alert-success"><strong>Bạn đã đăng bài thành công!</strong></div>';
}?>

Giải thích đoạn code : :

  • if( $_SERVER[‘REQUEST_METHOD’] == ‘POST’ && !empty( $_POST[‘add_new_post’] ) : Khi có hành động gửi bài viết có yêu cầu là POST
  • current_user_can(‘level_0’) : thành viên cần là thành viên đăng ký
  • isset( $_POST[‘post_nonce_field’] ) && wp_verify_nonce( $_POST[‘post_nonce_field’], ‘post_nonce’ ) : Tồn tại và xác nhận trường post_nonce_field (Bảo mật)
  • if (isset($_POST[‘tên trường’])) : Kiểm tra đã nhập các trường bên trên hay chưa.
  • $post = array() Tổng hợp các trường vào 1 mảng với cấu trúc của WordPress
  • wp_insert_post($post) Tiến hành thêm bài viết với các trường đã được nhập
  • if ($_FILES) – insert_attachment() Nếu tồn tại file ảnh thì thực hiện thêm vào ảnh đại diện

 
Như vậy chúng ta có File dang-bai.php đầy đủ như sau :

<?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"; }
?>

<div id="vnkings_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" 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_obj = $wp_query->get_queried_object(); wp_editor( $post_obj->post_content, 'userpostcontent', array( 'textarea_name' => 'post_content' ));?>
		</div>
		<div class="form-group vnking_pd col-md-6">
		  <label for="post_content">Danh mục</label>
			<?php $categories = wp_dropdown_categories("echo=0&hide_empty=0&selected=0");
				preg_match_all('/s*<option class="(S*)" value="(S*)">(.*)</option>s*/', $categories, $matches, PREG_SET_ORDER);
				echo "<select id='post_category' class='form-control' name='post_category'>";
				foreach ($matches as $match){
				echo "<option value='{$match[2]}'>{$match[3]}</option>";
				}
				echo "</select><br />n";
			?>
		</div>
		<div class="form-group vnking_pd col-md-6">
		  <label for="post_tags">Từ khóa</label>
		  <input type="text" name="post_tags" class="form-control" placeholder="Từ khóa">
		</div>
		<div class="form-group">
			<p><img id="output_avatar"/></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">Đăng Bài</button>
			</div>
		</div>
	</form>
</div>
<?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'];
}
if (isset($_POST['post_tags'])) {
	$post_tags = $_POST['post_tags'];
}
$post = array(
	'post_title'    => wp_strip_all_tags($post_title),
	'post_content'  => $post_content,
	'post_category' => array($post_category),
	'tags_input'    => $post_tags,
	'post_status'   => $vnstatus,
	'post_type' => 'post',
);
$vnkings_post_id = wp_insert_post($post);

if ($_FILES) {
	foreach ($_FILES as $file => $array) {
	$newupload = insert_attachment($file,$vnkings_post_id);
	}
}
echo '<div class="alert alert-success"><strong>Bạn đã đăng bài thành công!</strong></div>';
}?>

<?php } else { ?>
<div class="formdangnhap">
	<?php wp_login_form(); ?>			
</div>
<?php } ?>

Chưa hết, bạn cần thêm 1 đoạn Function hỗ trợ đoạn thêm ảnh đại diện bài viết ở bên trên
– Thêm đoạn function này vào file Functions.php trong thư mục Theme WordPress bạn đang sử dụng:

function insert_attachment($file_handler,$post_id,$setthumb='false') {
    // check to make sure its a successful upload
    if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false();
    require_once(ABSPATH . "wp-admin" . '/includes/image.php');
    require_once(ABSPATH . "wp-admin" . '/includes/file.php');
    require_once(ABSPATH . "wp-admin" . '/includes/media.php');
    $attach_id = media_handle_upload( $file_handler, $post_id );
 
    if ($setthumb) update_post_meta($post_id,'_thumbnail_id',$attach_id);
    return $attach_id;
}

– Cuối cùng là bạn vào Trang quản trị > Trang > Tạo trang > Đăng bài (chọn template là Đăng bài):

Tạo trang đăng bài cho thành viên wordpress không cần plugin

Sau đó bạn có thể xem kết quả với link page vừa tạo
Demo đăng bài vnkings : https://wordpress.vnkings.com/dang-bai.html

Với các bước bên trên bạn đã tạo được cho mình 1 trang đăng bài viết cho thành viên ở WordPress mà không cần sử dụng đến Plugin

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

Bài liên quan

    • Đầu tiên bạn tạo 1 template là đăng ký, sau đó thêm đoạn code kia vào. tiếp đến vào tạo trang chọn template đăng ký kia là xong nhé
      —————————————–
      Mình vừa teamview cho bạn rồi nhé

      • bác cho em ? sao em bị lỗi không lấy ra chuyên mục được vậy ạ Warning: preg_match_all(): Unknown modifier ‘o’ in C:\xampp\htdocs\oto.com\wp-content\themes\accelerate\page-templates\dangbai.php on line 34 lỗi này là lỗi gì nhỉ bác ơi

          • em cũng bị lỗi như này bác cho em ? sao em bị lỗi không lấy ra chuyên mục được vậy ạ Warning: preg_match_all(): Unknown modifier ‘o’

            và dòng đó của em là bị cái này ạ

            <?php $categories = wp_dropdown_categories("echo=0&hide_empty=0&selected=0");
            preg_match_all('/s*(.*)s*/’, $categories, $matches, PREG_SET_ORDER);
            echo “”;
            foreach ($matches as $match){
            echo “{$match[3]}”;
            }
            echo “n”;
            ?>

    • Nếu bạn muốn upload nhiều hình thì có thể dùng cách này:
      phần input upload bạn thay bằng:

         <input type="file" id="image" name="image[]" onchange="updateList();" multiple="multiple" >
         <ul id="file_list"></ul>
      <script>
      function updateList(){
          //get the input and UL list
          var input = document.getElementById('image');
          var list = document.getElementById('file_list');
      
          //empty list for now...
          while (list.hasChildNodes()) {
            list.removeChild(ul.firstChild);
          }
      
          //for every file...
          for (var x = 0; x < input.files.length; x++) {
            //add to list
            var li = document.createElement('li');
            li.innerHTML = 'File ' + (x + 1) + ':  ' + input.files[x].name;
            list.append(li);
          }
      }
      </script>
      

      Tiếp theo bạn cần đoạn function này để xử lý ảnh upload lên:

      function fix_file_array(&$files) {
          $names = array(
              'name' => 1,
              'type' => 1,
              'tmp_name' => 1,
              'error' => 1,
              'size' => 1
          );
          foreach ($files as $key => $part) {
              // only deal with valid keys and multiple files
              $key = (string) $key;
              if (isset($names[$key]) && is_array($part)) {
                  foreach ($part as $position => $value) {
                      $files[$position][$key] = $value;
                  }
                  // remove old key reference
                  unset($files[$key]);
              }
          }
      }
      
      
      function insert_attachment($file_handler,$post_id,$setthumb='false') {
          require_once(ABSPATH . "wp-admin" . '/includes/image.php');
          require_once(ABSPATH . "wp-admin" . '/includes/file.php');
          require_once(ABSPATH . "wp-admin" . '/includes/media.php');
          $attach_id = media_handle_sideload( $file_handler, $post_id );
          if ($setthumb) update_post_meta($post_id,'_thumbnail_id',$attach_id);
          return $attach_id;
      }
      

      Cuối cùng là đoạn check nếu có file ở dưới đoạn input :

      if ($_FILES) {
          fix_file_array($_FILES[$name]);
          foreach ($_FILES[$name] as $file => $fileitem){
              $newupload = insert_attachment($fileitem,$real_post_id);
          }
      }
      

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

      • Chào Bạn, bài viết rất hay. Xong theme của mình CSS không đúng nên bị vỡ bể hết, mặc dù các thuộc tính có hiển thị. Bạn có thể Edit bằng team view cho mình được không ? Cảm ơn và có hậu tạ bạn nhé. Số của mình 0968.022.948

  1. Bạn cho mình hỏi chút được không vậy. Mình muốn tạo 1 page đăng bài cho thành viên nhưng trong bài đăng yêu cầu có hình ảnh, kích cỡ chính xác và bắt buộc kích cỡ như vậy mới được đăng. Thứ hai là phần quản lý sét duyệt. VD như đăng bài xong mình phải duyệt bài mới cho đăng. Bạn có thể giúp mình được không vậy. Thanks !

    • Vấn đề 1 :
      Bạn có thể dùng 1 đoạn javascript để check kích cỡ và dung lượng:

      $('.btn-primary').click( function() {
         //kiểm tra trình duyệt có hỗ trợ File API
          if (window.File && window.FileReader && window.FileList && window.Blob)
          {
             // lấy dung lượng và kích thước, kiểu file từ input
              var fsize = $('#i_file')[0].files[0].size;
              var ftype = $('#i_file')[0].files[0].type;
              var fname = $('#i_file')[0].files[0].name;
       
              if(fsize>1048576)  //thuc hiện lệnh nếu dung lượng vượt quá 1MB
              {
                  alert("Type :"+ ftype +" | "+ fsize +" bites\n(File: "+fname+") Quá lớn!");
              }else{
                  alert("Type :"+ ftype +" | "+ fsize +" bites\n(File :"+fname+") File ổn đó!");
              }
          }else{
              alert("Vui lòng nâng cấp trình duyệt của bạn, bởi vì trình duyệt hiện tại của bạn thiếu một số tính năng mới, chúng ta cần!");
          }
      });
      

      Vấn đề 2
      bài viết trên mình có 1 đoạn check user : nếu là tác giả trở lên thì cho phép bài publish luôn, còn là thành viên đang ký thì sẽ dạng chờ sét duyệt, bạn cũng có thể sửa nó để tác giả cũng cần duyệt :

      if($vnkings <= 2) { $vnstatus = "pending"; } else { $vnstatus = "publish"; }
      // thay số 2 thành số 3 thì tác giả cũng cần duyệt bạn nhé
      

      Mong nó giúp được bạn!

  2. if ($_FILES) {
    fix_file_array($_FILES[$name]);
    foreach ($_FILES[$name] as $file => $fileitem){
    $newupload = insert_attachment($fileitem,$real_post_id);
    }
    }

    Đoạn này chèn dưới input cụ thể là chỗ nào cậu?
    Phần danh mục nó cũng không hiện Category ra nữa

  3. Warning: preg_match_all(): Unknown modifier ‘o’ in C:\xampp\htdocs\oto.com\wp-content\themes\accelerate\page-templates\dangbai.php on line 34 lỗi này là lỗi gì nhỉ bác ơi

  4. Cám bài viết chi tiết của ad. trước mình có nghĩ tới việc tạo trang đăng bài nhưng là sử dụng plugin. Nhung thấy cái giao diện của plugin xấu quá. Sẽ áp dụng thử cách này của bạn.

  5. Chưa hiểu lắm, làm theo mà sao không có phần template Đăng Bài khi tạo trang mới !
    Cũng chưa thấy mối liên hệ giữa file dang-bai.php với funtion ?
    Giải thích cụ thể hơn được không bạn ơi ?

    • Vấn đề 1:
      Sau khi bạn tạo 1 file php có nội dung như sau :

      <?php
      /*
       Template Name: Đăng bài
       */
       ?>
      

      Thì trong phần chọn template page sẽ có thêm 1 cái là : Đăng bài
      Bạn xem lại xem trong file dang-bai.php đã có đoạn đó chưa nhé.

      Vấn đề 2:
      Mối liên hệ giữa dang-bai.php với funtions:
      Bạn có thể thấy trong file dang-bai.php có 1 đoạn là

      $newupload = insert_attachment($file,$vnkings_post_id);
      

      Và 1 đoạn chèn vào funtions để xử lý cho yêu cầu insert_attachment là:

      function insert_attachment
  6. nếu up kiểu này thì nó sẽ có 2 ảnh trên thư viện, up ảnh đại diện thì sẽ có 1 cái và ảnh thư viện 1 cái nữa.
    có cách nào để up 1 ảnh dùng cho cả 2 k ad

    • Bạn có thể thêm các input vào:

      <div class="form-group vnking_pd col-md-6">
                <label for="post_tags">Trường của bạn</label>
                <input type="text" name="post_truongcuaban" class="form-control" placeholder="Trường của bạn">
      </div>
      

      Tiếp đến trong phần update dữ liệu.
      Tìm:

      $vnkings_post_id = wp_insert_post($post);

      Thêm vào sau:

      $post_truongcuaban = $_POST['post_truongcuaban'];
      update_post_meta($vnkings_post_id,'post_truongcuaban',$post_truongcuaban);
      

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

  7. Mình tạo xong tất cae đều ok nhưng bị lỗi thế này ở chỗ chọn danh mục
    Warning: preg_match_all(): Unknown modifier ‘o’ in /home/xxx/wp-content/themes/xxx/dangbai.php on line 40

  8. Những bạn bị lỗi không tương thích với hàm preg_match_all():

    Warning: preg_match_all(): Unknown modifier
    

    Thì thay code chỗ category:

    <?php $categories = wp_dropdown_categories("echo=0&hide_empty=0&selected=0");
                    preg_match_all('/s*<option class="(S*)" value="(S*)">(.*)</option>s*/', $categories, $matches, PREG_SET_ORDER);
                    echo "<select id='post_category' class='form-control' name='post_category'>";
                    foreach ($matches as $match){
                    echo "<option value='{$match[2]}'>{$match[3]}</option>";
                    }
                    echo "</select><br />n";
                ?>
    

    Thành:

    <?php $categories = wp_dropdown_categories( array( 'echo' => 0, 'taxonomy' => 'category', 'hide_empty' => 0 ) );
    $categories = str_replace( "name='cat' id=", "name='post_category' id=", $categories );
    echo $categories; ?>
    

    Cảm ơn các bạn đã luôn ủng hộ Vnkings.com

    • Nếu bạn muốn trường đó là trường bắt buộc nhập thì ở phần input file:

      <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)">

      Bạn thêm đoạn này vào nhé:

      required=""

      kết quả sẽ là:

      <span class="btn btn-default btn-file">Hình ảnh bài viết <input class="input-file" accept="image/*" name="file" required="" type="file" class="file" onchange="loadFile(event)">

      Sau khi hoàn thành, ai viết bài ở web bạn sẽ bắt buộc phải up ảnh đại diện, nêu không nó không cho đăng bài.

  9. Chào bạn,

    Mình làm giống bạn thì đăng bài được. Nhưng nếu đăng nhập vào bằng user có quyền là thành viên đăng ký thì lại không hiện ra mục thêm media để chèn ảnh vào bài viết. Làm sao để cấp quyền cho user trong nhóm thành viên đăng ký cũng chèn ảnh được.
    2/ Trong mục quản lý media, có cách nào cấm người dùng xoá ảnh không phải do mình đăng được không, vì có những user khác lỡ tay xoá mất hình thì bài cũ sẽ bị mất hình đăng.
    Cám ơn

  10. Warning: preg_match_all(): Unknown modifier ‘o’ in /home/u918119383/public_html/wp-content/themes/lighthouse/dang-bai.php on line 35
    em bị lỗi này thì sửa sao được ạ

    Code dong 35:

    preg_match_all(‘/s*(.*)s*/’, $categories, $matches, PREG_SET_ORDER);

  11. get_queried_object(); wp_editor( $post_obj->post_content, ‘userpostcontent’, array( ‘textarea_name’ => ‘post_content’ ));?>

    Đoạn này em thêm vào rồi, nhưng các nút soạn thảo không hiển thị, rồi nút thêm hình ảnh cũng không hoạt động là sao vậy ạ https://prnt.sc/fampv0

    • Bạn để ý dòng này:

      <?php $post_obj = $wp_query->get_queried_object(); wp_editor( $post_obj->post_content, 'userpostcontent', array( 'textarea_name' => 'post_content' ));?>
      

      Thêm:

      'media_buttons' => true

      Hoàn chỉnh:

      <?php $post_obj = $wp_query->get_queried_object(); wp_editor( $post_obj->post_content, 'userpostcontent', array( 'textarea_name' => 'post_content','media_buttons' => true ));?>
      
  12. Chào anh,
    Hiện em đang sử dụng đoạn code này để tự động thêm link cho từ khóa.

    function auto_add_affiliate_links($text){
    $replace_words = array(
    ‘WordPress’ => ‘Blog thủ thuật WordPress‘,
    ‘Plugin’ => ‘Cài đặt Plugin‘,
    ‘Theme Free’ => ‘Theme miễn phí
    );
    $text = str_replace(array_keys($replace_words), $replace_words, $text);
    return $text;
    }
    add_filter(‘the_content’, ‘auto_add_affiliate_links’);
    add_filter(‘the_excerpt’, ‘auto_add_affiliate_links’);

    Nhưng nó chỉ áp dụng cho phần content mặc định thôi. Bài viết của em có sử dụng cả các post meta nữa. Giờ làm sao để áp dụng được cho nó nhỉ?

    em thử thêm dòng sau thì bị lỗi.

    add_filter(‘get_post_metadata’, ‘auto_add_affiliate_links’);

    • Bạn tạo một Meta Field cho Post là: dinh_dang

      Trong file đăng bài bạn tạo thêm 1 đoạn để chọn định dạng:

       <div class="form-group">
        <label for="sel1">Định dạng bài viết</label>
        <select class="form-control" name="dinh_dang">
          <option>audio</option>
          <option>video</option>
          <option>article</option>
        </select>
      </div> 
      

      Phần xử lý bạn thêm đoạn này:

      if (isset($_POST['dinh_dang'])) {
          $dinh_dang = $_POST['dinh_dang'];
      }
      update_post_meta( $vnkings_post_id, 'dinh_dang', $dinh_dang);
      
    • Bạn có thể thêm các input vào:

      <div class="form-group vnking_pd col-md-6">
                <label for="post_gia">Giá</label>
                <input type="text" name="post_gia" class="form-control" placeholder="Giá">
      </div>
      <div class="form-group vnking_pd col-md-6">
                <label for="post_link_down">Link Download</label>
                <input type="text" name="post_link_down" class="form-control" placeholder="Link Download">
      </div>
      

      Tiếp đến trong phần update dữ liệu.
      Tìm:

      $vnkings_post_id = wp_insert_post($post);

      Thêm vào sau:

      $post_gia = $_POST['post_gia'];
      $post_link_down = $_POST['post_link_down'];
      update_post_meta($vnkings_post_id,'post_gia',$post_gia);
      update_post_meta($vnkings_post_id,'post_link_down',$post_link_down);
      

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

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 ?