WPでカスタムフィールドとして保存された2つの日付間の時差を計算する方法を見つけるのに苦労しています。実際には2つの異なるプラグインを使用しています。
a) 簡単なコンテンツタイプ
b) 詳細投稿リスト
最初に、開始日(ecpt_data-consegna)と終了日(ecpt_data-dismissione)を含む一連のカスタムフィールドを作成しました。これらの日付の時差を表示する方法を見つけます。XX年、XXとして表示します。月、XX日 - Advanced Post Listプラグインを通じて生成されたテーブルのセル内。終了日が欠落している場合は、開始日と現在の日付(現在)の差を計算する必要があります。
両方のプラグインの開発者と多くのことを話し合った後、私たちは停止しました。現在、次のように日付計算を処理するためのカスタムPHP関数を開発しました。
function calculateDiff() {
$start_date = new DateTime(get_post_meta( get_the_ID(), 'ecpt_data-consegna', true ));
$since_start = $start_date->diff(new DateTime(get_post_meta( get_the_ID(), 'ecpt_data-dismissione', true )));
if($since_start->days == 0) {
$since_start = $start_date->diff(new DateTime());
}
return $since_start->y . ' years, ' . $since_start->m . ' months, ' . $since_start->d . ' days'; }
しかし、このAPLのショートコードをAPLで生成されたセルの1つに入れると、次のようになります。
<td>[php_function name="calculateDiff"]</td>
その結果、壊れたWebページが作成され、テーブル自体が生成されます。そして、代わりにこのコードを使おうとすると:
<td><?php echo calculateDiff();?></td>
結果は空白のセルです。
関数を直接(APLの外側で)呼び出すことも試みましたが、結果は常に空白になります。それで、どこかに問題があるはずです….
どんな助けでも大いに喜ばれるでしょう!
これがどれほど役立つかはわかりませんが、日付/時刻の比較を行うときは、常に最初にUNIXのタイムスタンプに変換する必要があります(日付/時刻を数字に変換します。次の数よりも大きい/等しい/等しい)、差を並べ替えた後、date()で変換し直します。
簡単な例(あなたのコードではなく、数年前に私がクライアントのために私がした簡単な例)はこれをすることでした:
$today = date('d-m-Y'); // today's date
$today = strtotime($today); // UNIX conversions
私は最初にそれらをUNIXに変換せずに日付の比較をする運がなかった。