私はpostexpiry
と呼ばれるメタフィールドを持っています、そして私は値を公開日、+ 2週間に設定したいです。したがって、今日が10月3日だったとしたら、このフィールドを10月17日に設定したいと思います。
私はpublish_post
フィルターへのフックを作成することを考えていました、しかし私はget_the_date()
に2週間を追加する方法がわかりません。
私はphpでこの$dateInTwoWeeks = strtotime('+2 weeks');
のようなことができることを知っていますが、get_the_date()
でそれをどのように使うかはわかりません。
ありがとうございます。
UPDATE
次のコードを試しましたが、何もしませんでした。
function dp_expiry() {
$dp_new_expiry_date = strtotime( '+2 weeks', strtotime( $post->post_date ) );
update_post_meta( get_the_ID(), 'postexpiry', $dp_new_expiry_date );
}
add_action( 'publish_post', 'dp_expiry' );
また、私のテーマは日付がyyyy-mm-dd
フォーマットであることを要求します。
アップデート2
このコードはフィールドに "1209600"を出力します。何か案は?ありがとうございます。
add_action('publish_post', 'dp_expiry');
function dp_expiry( $data ) {
$dp_new_expiry_date = strtotime( '+2 weeks', strtotime( $post->post_date ) );
update_post_meta( $data['post_id'], 'postexpiry', $dp_new_expiry_date );
}
これを試して:
add_action('publish_post', 'dp_expiry');
function dp_expiry( $data ) {
/*adds 2 weeks onto the current date in unix Epoch format*/
$dp_new_expiry_date = (strtotime( current_time( 'mysql' ) ) + 1209600);
/*converts unix timstamp back to yyyy-mm-dd format like you required*/
$dp_new_expiry_date_conv = date("Y-m-d", $dp_new_expiry_date);
update_post_meta( $data['post_id'], 'postexpiry', $dp_new_expiry_date_conv );
}
get_the_ID()
はループ関数であり、ここでは動作しないかもしれません。代わりにコールバックのパラメータを使うべきです:
function dp_expiry( $ID, $post ) {
$dp_new_expiry_date = strtotime( '+2 weeks', strtotime( $post->post_date ) );
update_post_meta( $ID, 'postexpiry', $dp_new_expiry_date );
}
add_action( 'publish_post', 'dp_expiry', 10, 2 );
publish_post
は投稿に対してのみ機能し、ページには機能しません。カスタム投稿タイプにはpublish_{post_type}
を使用できます。