Desativar automaticamente comentários com campo personalizado

Eu tenho esse código para desabilitar comentários após X dias com base na data de publicação. Como editar este código para fechar automaticamente comentários com base em uma data específica usando o campo personalizado? Obrigado.

function close_comments( $posts ) { if ( !is_single() ) { return $posts; } if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( 30 * 24 * 60 * 60 ) ) { $posts[0]->comment_status = 'closed'; $posts[0]->ping_status = 'closed'; } return $posts; } add_filter( 'the_posts', 'close_comments' ); 

Solutions Collecting From Web of "Desativar automaticamente comentários com campo personalizado"

Editar seu código para usar um campo personalizado é bastante trivial …

 function close_comments( $posts ) { if ( !is_single() ) { return $posts; } $cmeta = get_post_meta($posts[0]->ID,'your_field_name',true); if ( $posts[0]->post_date_gmt < $cmeta ) { $posts[0]->comment_status = 'closed'; $posts[0]->ping_status = 'closed'; } return $posts; } add_filter( 'the_posts', 'close_comments' ); 

Não tenho a certeza de que essa abordagem é a certa.

  1. Você realmente é apenas bruta forçando um status fechado. Este é um hack “somente exibição”. Não altera o status do database.
  2. Isso é executado no front-end, toda vez que qualquer postagem é exibida e executada para muitas outras consultas também. Isso me parece um bom despreocupado.

Eu acho que eu gostaria de repensar tudo para usar wp_cron