web-dev-qa-db-ja.com

日付を比較するカスタム投稿タイプの列

投稿に開始日と終了日があるカスタム投稿タイプがあります。これらはUNIXのタイムスタンプ/ Epochとしてデータベースに保存されます。現在の日時が開始日と終了日の間にあるときに緑色のアイコンを表示するActiveという名前のカスタム投稿タイプの列を作成します。

メタデータを取得して現在の日付/時刻と比較し、trueの場合は緑色のアイコンを表示し、赤色のアイコンは表示しない

私はこの機能を持っていますが、それは検索結果のためにほとんど同じことをします。しかし、これをコラムで使用する方法を理解することはできません。

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

私はそれを解決しました:

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

これがそれを実行するための最良の方法であるかどうかわからないのですか?

3
joq3