Hỏi cách publish số bài ở Drafts của Wordpress

Discussion in 'Hỏi Đáp Kỹ Thuật' started by u23, May 21, 2022.

  1. u23

    u23 Sơ Nhập Giang Hồ

    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
     
  2. leonardo_17

    leonardo_17 Tân Thủ Thôn

    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'"
     
    Ezzra Bridger, wpresources and u23 like this.
  3. Dang

    Dang Bang Chúng

    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
     
    leonardo_17, u23 and Nai like this.
  4. minitrader8x

    minitrader8x Khách Qua Đường

    cài xong chờ tầm 5 phút wordpress.org/plugins/auto-publish-drafts
     
  5. u23

    u23 Sơ Nhập Giang Hồ

    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á
     
  6. minitrader8x

    minitrader8x Khách Qua Đường

    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
     
    u23 likes this.
  7. u23

    u23 Sơ Nhập Giang Hồ

    upload_2022-5-21_15-30-59.png
    Có phải đoạn này không bác nhỉ? Chỉnh vậy mà nó vẫn mỗi lần load được 1 bài
     
  8. minitrader8x

    minitrader8x Khách Qua Đường

    Đúng rồi thử deactive và active lại plugin nhé
     
  9. u23

    u23 Sơ Nhập Giang Hồ

    Vẫn vậy bác
    P/s: Thử chỉnh 300 thành 10 thì nó có được 1 s pub 1 bài
     
  10. minitrader8x

    minitrader8x Khách Qua Đường

    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 à
     
    u23 likes this.
  11. Dang

    Dang Bang Chúng

    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 :D

    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(97122)), $_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');
    }

     
    u23 likes this.
  12. u23

    u23 Sơ Nhập Giang Hồ

    Cảm ơn bác @Dang
     
    Dang likes this.
  13. leonardo_17

    leonardo_17 Tân Thủ Thôn

    Ạ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ì
     
    Dang likes this.
  14. hoangnguyenvu

    hoangnguyenvu Khách Qua Đường

    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 ạ

    [​IMG]
    [​IMG]
     
    Last edited: May 23, 2022
  15. leonardo_17

    leonardo_17 Tân Thủ Thôn

    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.
     
    hoangnguyenvu likes this.