it-swarm.com.de

Stellen Sie das Metafeld auf Veröffentlichungsdatum + 2 Wochen ein

Ich habe ein Metafeld mit dem Namen postexpiry und möchte den Wert auf das Veröffentlichungsdatum von + 2 Wochen festlegen. Wenn heute der 3. Oktober wäre, möchte ich, dass das Feld auf den 17. Oktober eingestellt wird.

Ich habe überlegt, einen Hook für den publish_post-Filter zu erstellen, bin mir aber nicht sicher, wie ich get_the_date() um 2 Wochen verlängern soll.

Ich weiß, dass ich mit PHP so etwas tun kann $dateInTwoWeeks = strtotime('+2 weeks');, aber ich bin mir nicht sicher, wie ich das mit get_the_date() verwenden soll.

Vielen Dank!

UPDATE

Ich habe den folgenden Code ausprobiert, aber er hat nichts bewirkt:

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

Auch , mein Thema erfordert, dass das Datum im Format yyyy-mm-dd ist.

UPDATE 2

Dieser Code gibt "1209600" in das Feld aus. Irgendwelche Ideen? Vielen Dank!

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 );
}
1
Edegist

Versuche dies:

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 );
}
0
harvey

get_the_ID() ist eine Schleifenfunktion und funktioniert hier möglicherweise nicht. Sie sollten stattdessen die Parameter Ihres Rückrufs verwenden:

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 funktioniert nur für Posts, nicht für Seiten. Sie können publish_{post_type} für einen benutzerdefinierten Beitragstyp verwenden.

0
Michael