web-dev-qa-db-fra.com

Colonne de type de message personnalisé qui compare les dates?

J'ai un type d'article personnalisé où les articles ont une date de début et une date de fin. Celles-ci sont enregistrées dans la base de données en tant qu'horodatage/époque Unix. Je souhaite créer une colonne pour ce type d'article personnalisé appelé Active dans laquelle je souhaite afficher une icône verte lorsque la date et l'heure actuelles sont comprises entre la date de début et la date de fin.

Comment puis-je extraire les métadonnées et les comparer à la date/heure actuelles et si vrai afficher une icône verte, sinon une icône rouge?

J'ai cette fonction qui fait presque la même chose mais pour les résultats de recherche. Mais je ne peux pas comprendre comment utiliser cela dans une colonne:

function filter_search_results( $search_query ) {
$time = current_time( 'timestamp' );
    if ( $search_query->is_search ) {
        $search_query->set( 'meta_query', array(
            'relation' => 'AND',
            array(
                'key' => 'visitor-start-date',
                'value' => $time,
                'compare' => '<='
            ),
            array(
                'key' => 'visitor-end-date',
                'value' => $time,
                'compare' => '>='
            ),
        ) );
    }
}
add_action( 'pre_get_posts', 'filter_search_results' );
3
joq3

Je l'ai résolu:

  if ( 'visitor_active' == $column_name ) {
    $start_date = get_post_meta( $post_id, 'visitor-start-date', true );
    $end_date = get_post_meta( $post_id, 'visitor-end-date', true );
    $current_time = current_time( 'timestamp' );
      if ($start_date < $current_time && $end_date > $current_time) {
        echo '<span class="dashicons dashicons-yes" style="color:#75c377;"></span>';
      }
      else {
        echo '<span class="dashicons dashicons-no" style="color:lightgray;"></span>';
      }
  }

Vous ne savez pas si c'est la meilleure façon de le faire?

3
joq3