EDIT: Il fonctionne actuellement lorsque je mets un post collant et que sa date est fixée au 07/07/2016. Mon code jusqu'ici: j'ai ajouté ceci pour changer la date de publication du message quand il devient collant:
// Update post timestamp
$newdate = current_time('mysql');
$my_post = array(
'ID' => $post_id,
'post_date' => $newdate
);
wp_update_post($my_post);
// Update post timestamp
Et aussi ceci pour décoller le post s'il est collant et âgé de plus de 7 jours:
function deleteOldStickies($post_id, $postDate) {
$postDate = strtotime($postDate);
$currentTime = strtotime(time());
$expire = $currentTime + strtotime('-1 day');
if ($postDate < $expire && is_sticky()) {
unstick_post($post_id);
echo 'Обявата е изтекла!';
}
}
Dans content.php, j'appelle la fonction comme:
<?php echo deleteOldStickies($post->ID, $post->post_date); ?>
Mon autre question à partir des informations ci-dessus est la suivante: manque-t-il quelque chose d’important, cela fonctionnera-t-il correctement en environnement réel?
OK, je l’ai obtenu. C’est le code que j’ai utilisé. Je ne sais pas si c’est la meilleure pratique, mais ça marche.
Dans functions.php où je rend les articles collants depuis le front-end, j'ai ajouté ceci pour mettre à jour la date de post_date à aujourd'hui afin que je puisse avoir le contrôle de la période bloquante:
$newdate = current_time('mysql');
$my_post = array(
'ID' => $post_id,
'post_date' => $newdate
);
wp_update_post($my_post);
Dans functions.php (j’avais utilisé -1 jour à des fins de test, si vous tapez -7 jours dans la variable $ expire, cela décollera les stickyposts antérieurs à 7 jours.
//Delete Old Stickies START
function deleteOldStickies($post_id, $postDate) {
$postDate = strtotime($postDate);
$expire = strtotime('-1 day') + get_option( 'gmt_offset' ) * 3600;
if ($postDate < $expire && is_sticky()) {
unstick_post($post_id);
}
}
//Delete Old Stickies END
Dans la boucle :
<?php echo deleteOldStickies($post->ID, $post->post_date); ?>