サポート » 使い方全般 » 公開日時(投稿日)からn年後の日付を取得したい

  • 会員サイトを構築しており、
    ユーザー会員の有効期限を設定したいと思っています。

    入会日をデフォルト機能の「公開日時」とする場合、
    そのn年後(私の環境では2年後※)の日付を「満了日」とし、
    カスタムフィールドの値として保管したいと思っています。

    つきましては、公開日時からn年後の値の取得方法(DBへの保管)と、
    可能であれば、ダッシュボードへの表示方法を教えてください。

    ちなみに、ユーザーの会員情報(名前・住所など)は、
    カスタム投稿を設けて、そこに1ユーザーずつ登録しています。
    そのユーザー情報の画面に該当の値を表示させたいです。

    ※欲を言えば、2年後の1日前の日付を有効期限の最終日にしたいです。
    ただし、それの算出が難しいようであれば、単に2年後の日付でも構いません。
    Best: 公開日時2014/06/05  → 取得したい日付2016/06/04
    Better: 公開日時2014/06/05  → 取得したい日付2016/06/05

    以上です、どうぞよろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター Daisuke Takahashi

    (@extendwings)

    ヒントだけですが。

    • プラグイン形式にすると後々の運用などが楽
    • ユーザ情報を保存するのは add_user_meta() や update_user_meta() を使えば簡単にできます。
    • ユーザ作成時に特定の動作を発火させるためには user_register フックが利用できます。
    • 日付けを計算するのはWordPressの仕事ではなく、純粋なPHPの範囲です。
    • ダッシュボードに表示するためにはWordPressに Deshboard Widgets API が用意されています。

    カスタムフィールドを利用するということはユーザ情報をカスタム投稿タイプか何かで保持することを考えていらっしゃるのでしょうか。
    どのようなサイトなのか存じ上げないので個別の事例についてはコメントできませんが、一般的に会員向けサイトとしてログイン機能を持たせるのであれば、WordPressにユーザを追加することをお勧めします。

    「カスタムフィールド」と「カスタム投稿」は名称を間違えているのかもしれませんが、よくわからないので、日付の例だけ。

    $date = new DateTime('today +2 year -1 days');
    $formatted_date = $date->format('Y/m/d');

    DATE_SUB(DATE_ADD(CURDATE(), INTERVAL 2 YEAR), INTERVAL 1 DAY)

    Daisuke Takahashiさん、kjmtshさん、共に回答ありがとうございます。

    ちょっと説明不足でしたので、追記します。

    現在、当方では “members” というカスタム投稿を設置しており、ユーザー一人ひとりの情報をカスタム投稿の記事として管理しています。
    ※極力プラグインは使いたくないので、functions.phpから設定しています。

    次に、カスタムフィールドテンプレート(←これに関してはプラグインですが、、、)を利用して、ユーザー情報を登録するための入力フィールドを幾つか設置しています。
    例: 氏名、住所、TEL、FAXなど、、、

    そして、ここからが今回の質問内容なのですが、このユーザー情報の中に、契約終了日(←公開日時の日付から換算して「2年後の1日前の日付」)を自動で取得させたいと思っています。
    ※公開日時を変更することで、「2年後の1日前の日付」も連動する動きにしたいです。

    さらに次ぎの希望として、自動で取得したその「2年後の1日前の日付」をカスタム投稿の編集画面に表示させたいと思っています。

    kjmtshさんからご回答いただいた内容を試してみたところ、確かに「2年後の1日前の日付」を取得できました。しかしながら、あくまで”本日”から換算された日付であり、投稿画面の「公開日時」と連動しているものではありませんでした。
    (「公開日時」を変更してもkjmtshさんにご教示いただいた方法で取得した日付は変更されませんでした。)

    ということで、上記が今回希望している内容です。

    以上、誠に恐縮なのですが、どなたかご教示願います。

    Daisuke Takahashi さんがリンクを張ってくれた PHP のマニュアルを読むと、やり方がわかります。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「公開日時(投稿日)からn年後の日付を取得したい」には新たに返信することはできません。