it-swarm-pt.tech

Como definir o status da postagem para rascunho se por mais antigo que hoje

Em uma pergunta anterior, precisei definir uma postagem datada futura (tipo de postagem personalizada) conforme publicada em salvar, em vez de agendá-la.

Na data é 'agendado' porque eu gostaria de configurá-lo como um rascunho novamente. Eu tenho tentado ligar para o init e envolvê-lo em um tipo de post para verificação. Eu imaginei que ele se compararia à hora do servidor e depois definiria o status para o rascunho se fosse mais antigo que o horário do servidor.

Como um esboço:

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

Aqui e atualize com algum código com o qual estou trabalhando.

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' );

Ele está recebendo as mensagens que eu preciso e está me dando o tempo do servidor, mas não está fazendo nada além disso, tanto quanto eu posso dizer.

2
curtismchale

Sua consulta não está fornecendo um ID de postagem, mas sim uma postagem inteira. O SELECT * retorna todas as colunas, ID, post_status, etc. Portanto, configurar $my_post['ID'] = $a não faz nada para você neste caso.

Tente usar: $my_post['id'] = $a->ID; em vez disso. Isso deve definir com precisão o seu ID antes de chamar wp_update_post() e você deve estar no negócio.

Além disso, não vejo problemas com o que você está fazendo ... exceto que consultar o banco de dados toda vez que o site é carregado pode eventualmente criar problemas de desempenho. Eu configurei um trabalho cronometrado de hora em hora para automatizar o processo ... então isso não depende nem diminui o tráfego do usuário.

1
EAMann