サポート » 使い方全般 » カスタムフィールドに入力した日付を使って記事の公開、非公開を適応

  • 解決済 aikuru

    (@ma-honda)


    カスタムフィールドに入力した日付を使って
    記事の公開、非公開を設定したいです。
    最終的には、is_ktai()を使用して
    ドコモだけは記事の公開日時をカスタムフィールドを適応させ
    それ以外は通常の公開日時を適応させる、というように作りたいです。
    PCやスマホは考えず、とりあえずガラケー表示のみ対応できればと思います。

    【例】↓↓対象記事↓↓
    タイトル:テスト記事
    公開日時:2015年2月23日 @ 15:18
    カスタムフィールド名:start_date
     入力値:20150324
    ↑こちらは2015-03-24や2015/03/24など
    最終的には扱いやすい表記にする予定です。

    初心者でfunction.phpに書くのかsingle.phpに書くのかもわかりません…。
    すみませんが、ご教示宜しくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • もう少し調べてみました。記事個別のページは
    こちらで対応できそうなのではと考えています。
    function.phpに記述。

    function start_date($query) {
        if ( is_admin() || ! $query->is_main_query() )
           return;
    
        $currnet_date = date(Ymd);
    
        if ( $query->is_single() ) {
           $query->set( 'posts_per_page', -1 );
           $query->set( 'orderby', 'meta_value' );
           $query->set( 'meta_key', 'date' );
           $query->set( 'order', 'ASC' );
           $query->set('meta_query',
                                    array(
                                        array(
                                        'key' => 'date',
                                        'value' => $currnet_date,
                                        'compare' => '<',
                                        'type' => 'DATE'
               )
             )
          );
       }
    }
    add_action( 'pre_get_posts', 'start_date' );

    ですが、これだとどの記事もアクセスできなくなってしまいました…。
    条件指定などが間違っているんだと思うのですが…

    立て続けですみません。こちらで出来ました。
    合っているのか自信はありませんが…。

    加えてドコモのみ適応という処理も入れました。

    function docomo_start_date($query) {
        switch (is_ktai()) {
            case 'DoCoMo' :
            if ( is_admin() || ! $query->is_main_query() )
               return;
    
            $currnet_date = date(Ymd);
    
            if ( $query->is_single() ) {
               $query->set( 'posts_per_page', -1 );
               $query->set( 'orderby', 'meta_value' );
               $query->set( 'meta_key', 'start_date' );
               $query->set( 'order', 'ASC' );
               $query->set('meta_query',
                                        array(
                                            array(
                                            'key' => 'start_date',
                                            'value' => $currnet_date,
                                            'compare' => '<=',
                                            'type' => 'DATE'
                   )
                 )
              );
            }
            break;
       }
    }
    add_action( 'pre_get_posts', 'docomo_start_date' );

    index.phpに出ている記事も
    ドコモのみstart_dateを読み取って表示、非表示が出来ればと思っているのですが
    どう記述すればよいのかわかりません。。。

    一応解決できたので記載しておきます。
    ちょっと間違ってるかもしれませんが…

    function single_carrier_flag($query) {
        if ( ! $query->is_page() ) {
    
            switch (is_ktai()) {
                case 'DoCoMo' :
    
                    $currnet_date = date(Ymd);
    
                    $query->set( 'posts_per_page', -1 );
                    $query->set( 'orderby', 'date' );
                    $query->set( 'meta_key', 'docomo' );
                    $query->set( 'order', 'DESC' );
                    $query->set('meta_query',
                                            array(
                                                    'key' => 'docomo_start_date',
                                                    'value' => $currnet_date,
                                                    'compare' => '<=',
                                                    'type' => 'DATE'
                                                )
                                            )
                                );
    
                break;
            }
        }
    }
    add_action( 'pre_get_posts', 'single_carrier_flag' );
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタムフィールドに入力した日付を使って記事の公開、非公開を適応」には新たに返信することはできません。