Chuyện là mình có cào được 300k bài, giờ muốn đăng phát hết luôn chứ edit tầm 500 bài xong pub thì site đứng hình luôn. Nhờ các cụ chỉ giúp
Chơi lệnh sql thôi bác, kiểu như này "UPDATE wp_posts SET post_status = 'publish' WHERE post_type = 'post' AND post_status = 'draft'"
Dùng lệnh sql thì nhanh, nhưng không nên dùng. Do một số plugin nó dùng hook (filter / action) khi đăng bài thì cập nhật các thông tin liên quan đến bài đăng đó. => Tạo 1 file .php => require_once wp-blog-header.php => loop và publish với hàm wp_publish_post
Bác có thể cho xin file wp-blog-header.php này được không? Mình không rành code Đã dùng cái này bác nhưng nó pub mỗi ngày được tầm 6k bài, thấy lâu quá
mở file plugin ra sửa cái số này lại Code: 'posts_per_page' => 1, thành Code: 'posts_per_page' => 100000, ý nghĩa là 5 phút nó publish 100k post
Code: if($draft_posts->have_posts()) { while($draft_posts->have_posts()) { foreach($draft_posts->posts as $draft_post_id) wp_update_post(array('ID' => $draft_post_id, 'post_status' => 'publish')); $draft_posts->the_post(); } wp_reset_postdata(); } sửa cái if lại nha mới coi lại nó get có 1 post à
Cách của em thì hơi bất tiện, nhưng nếu site dùng plugin thì ổn hơn. Ví dụ plugin Yoast SEO, nó sẽ cập nhật link trong sitemap khi đăng bài. 1. Bác tạo file do_publish_post.php ở thư mục gốc của site với nội dung bên dưới. 2. Truy cập http://domain.name/do_publish_post.php và chờ đến khi chạy xong. p/s : mỗi lần sẽ cập nhật 10 post, bác có thể thay đổi số $limit này, tùy theo cấu hình / tốc độ, nên để 10 - 100. Em code, chưa test, nhưng chắc ổn PHP: <?php@set_time_limit(0);define('WP_USE_THEMES', false);require_once ('wp-blog-header.php');global $wpdb;$limit = 10;$posts = $wpdb->get_results(sprintf('SELECT `ID` FROM `%s` WHERE `post_type` = "post" AND `post_status` = "draft" LIMIT %s', $wpdb->posts, $limit), object);if (!empty($posts)){ foreach ($posts as $post) { wp_publish_post($post->ID); } ?><!DOCTYPE html><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><meta http-equiv="refresh" content="0; url=<?php echo sprintf('%s?%s=%s', $_SERVER['SCRIPT_NAME'], chr(rand(97, 122)), $_SERVER['REQUEST_TIME']); ?>" /><meta http-equiv="Cache-control" content="private, max-age=0, no-cache" /><meta http-equiv="Expires" content="Thu, 01 Jan 1970 00:00:00 GMT" /><meta http-equiv="Pragma" content="no-cache" /><meta name="referrer" content="no-referrer" /><meta name="robots" content="nofollow,noindex" /><title>Publish post</title></head><body></body></html><?php}else{ exit('DONE');}
Ạch, trước giờ e bất cẩn, xem bác ms nhớ ra là thằng wp nó hook khá nhiều, trước chỉ muốn publish thật nhanh không để ý đến mấy cái khác. Cơ mà dùng nhiều post e ko dám cài thêm plugin gì, như Yoast SEO cũng ko, vì ko hiểu sao nó generate cái sitemap chậm rì rì
hic, em lại cài cả 30 cái plugin cho site auto. Site chậm như rùa luôn. Bác dùng những cái nào có thể chia sẻ em 1 xíu được ko ạ
Site auto mà bác chơi 30 cái plugins thì hơi căng, với sll post thì gần như e ko dám cài cái gì cả, chỉ cài cache để cho nó load nhanh, còn cần chức năng gì thì tự code vào theme hoặc tự code plugin. E tự code theme để giảm số lượng request tới db không cần thiết. Ngoài ra, có chơi đi link nội bộ, cũng tự code 1 plugin luôn để nó làm cho mình phần này.