web-dev-qa-db-fra.com

Définir le mot de passe pour publier la date + 2 semaines

J'ai un méta-champ appelé postexpiry et je souhaite définir la valeur sur la date de publication, + 2 semaines. Donc, si aujourd'hui était le 3 octobre, je veux que le terrain soit réglé au 17 octobre.

Je pensais créer un crochet au filtre publish_post, mais je ne sais pas comment ajouter 2 semaines à get_the_date().

Je sais avec php que je peux faire quelque chose comme ceci $dateInTwoWeeks = strtotime('+2 weeks'); mais je ne sais pas comment l'utiliser avec get_the_date()

Merci!

METTRE À JOUR

J'ai essayé le code suivant, mais il n'a rien fait:

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

Aussi , mon thème nécessite que la date soit au format yyyy-mm-dd.

MISE À JOUR 2

Ce code envoie "1209600" sur le terrain. Des idées? Merci!

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

Essaye ça:

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() est une fonction de la boucle et pourrait ne pas fonctionner ici. Vous devriez utiliser les paramètres de votre rappel à la place:

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 ne fonctionne que pour les articles, pas les pages. Vous pouvez utiliser publish_{post_type} pour un type de publication personnalisé.

0
Michael