it-swarm-vi.tech

Cách đặt Trạng thái bài viết thành Bản nháp nếu cũ hơn ngày hôm nay

Trong một câu hỏi trước tôi cần đặt một bài đăng ngày trong tương lai (loại bài đăng tùy chỉnh) như được xuất bản khi lưu thay vì lên lịch.

Vào ngày nó được 'lên lịch' vì tôi muốn đặt lại bản dự thảo. Tôi đã cố gắng nối vào init và gói nó lại nếu kiểm tra loại bài đăng. Tôi hình dung nó sẽ so sánh với thời gian của máy chủ và sau đó đặt trạng thái thành bản nháp nếu nó cũ hơn thời gian của máy chủ.

Như một phác thảo sơ bộ:

if custom post type
  get_the_time of post
  get the server time
  if post time is older than server time set status to draft
endif

Ở đây và cập nhật với một số mã tôi đang làm việc.

function sfn_show_expire(){
    global $wpdb;
    $server_time = date('mdy');
    $result = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_type = 'show' AND post_status = 'publish'");
    if( !empty($result)) foreach ($result as $a){
        $show_time = get_the_time('mdy', $a->ID );
        if ( $server_time > $show_time){
            $my_post = array();
            $my_post['ID'] = $a->ID;
            $my_post['post_status'] = 'draft';
            wp_update_post( $my_post );
        }
    } // end foreach
}
add_action( 'init', 'sfn_show_expire' );

Đó là nhận được những bài đăng tôi cần và cho tôi thời gian phục vụ nhưng không làm gì quá xa như tôi có thể nói.

2
curtismchale

Truy vấn của bạn không cung cấp cho bạn ID bài đăng, nó cung cấp cho bạn toàn bộ bài đăng. SELECT * trả về tất cả các cột, ID, post_status, v.v. Vì vậy, việc đặt $my_post['ID'] = $a không làm gì cho bạn trong trường hợp này.

Thay vào đó, hãy thử sử dụng: $my_post['id'] = $a->ID;. Điều đó sẽ đặt chính xác ID của bạn trước khi bạn gọi wp_update_post() và bạn sẽ kinh doanh.

Ngoài ra, tôi không thấy có vấn đề gì với những gì bạn đang làm ... ngoại trừ việc truy vấn cơ sở dữ liệu mỗi khi trang web được tải cuối cùng có thể tạo ra các vấn đề về hiệu suất. Thay vào đó, tôi đã thiết lập một công việc bấm giờ hàng giờ để tự động hóa quy trình ... sau đó nó không phụ thuộc hoặc làm chậm lưu lượng người dùng.

1
EAMann