Defina o valor do campo personalizado ao atingir a data de validade

Tive a ideia de fazer caduques legíveis após um determinado período de tempo.

FYI, estou usando um tipo de postagem personalizado juntamente com o conjunto de campos personalizado e crie postagens adesivas criando um campo personalizado booleano. premium é um campo personalizado verdadeiro / falso que retorna o valor 1 se a checkbox de seleção estiver marcada (o que torna uma publicação uma publicação em destaque)

Se eu criasse outro campo personalizado para definir a data de validade, como eu configuraria o valor do campo customizado para 0 quando a data de validade for atingida?

O que quero dizer é (em inglês escrito):

  • Verifique se há um campo personalizado com a chave “premium”
  • Verifique se o campo personalizado “premium” tem valor 1
  • verifique se há um campo personalizado com a chave “expiração_data”
  • verifique se o valor “expiration_date” está no passado, mas não hoje
  • se “expiration_date” estiver no passado, defina o valor “premium” como 0

Alguém pode ajudar a tornar esta function uma?

Eu começaria com o seguinte (por favor, desculpe o estilo, eu apenas estou tentando fornecer idéias)

 global $post; global $cfs; if ( '1' = $cfs->get('premium') && ' ' != $cfs->get('expiration_date') ) : $current_date = date(Ymd); $expiration_date = $cfs->get('expiration_date'); if( // I'm stuck here... ) .... date_post_meta( $post->ID, 'premium', '1', '0' ); // set premium field from 1 to 0 for every post that matches endif; 

Solutions Collecting From Web of "Defina o valor do campo personalizado ao atingir a data de validade"

Consegui. O desenvolvedor de plugins me ajudou a olhar para o meu código sugerido.

Primeiro, certifique-se de declarar global $cfs (necessário ao usar o Custom Field Suite Plugin).

O código a seguir verifica o campo personalizado chamado premium e se seu valor é definido como 1 (o que significa que é suposto ser uma publicação premium) e também para um campo personalizado chamado expiration_date e se um valor estiver definido.

O código, em seguida, formata a data de hoje adequadamente para combinar o formato de data do campo personalizado, que é Ymd nesse caso.

Depois de definir e formatar as datas, o código verifica se a data de validade está no passado ( $expiration_date < $today ) e atualiza o valor do campo premium de 1 a 0 , o que significa que não reconhece o status premium de postagem.

O código:

 global $cfs; //necessary for custom field suite plugin if ( '1' == $cfs->get('premium') && '' != $cfs->get('expiration_date') ) : // if post has premium status and an expiration date set $current_date = date('Ym-d'); // format today's date $expiry = $cfs->get('expiration_date'); $today = strtotime($current_date); $expiration_date = strtotime($expiry); if ( $expiration_date < $today ) { // if expiration date is in the past $field_data = array('premium' => '0'); // unset premium status $post_data = array('ID' => $post->ID); $cfs->save($field_data, $post_data); } endif;