Un code simple à ajouter à votre fichier functions.php pour republier régulièrement et automatiquement vos articles ou tout autre post type de votre site WordPress. Il existe également une extension WordPress pour ceux qui n'aiment pas mettre les mains dans le code.
Republier vos articles automatiquement sans plugin sur WordPress
Le fonctionnement de ce code PHP est simple. La première partie du code permet d'ajouter un cron (ici un wp-cron plus précisément) qui se chargera d’exécuter une fonction à intervalles réguliers. La seconde partie du code, quant à lui, se compose d'une requête qui appelle le post le plus ancien et qui lui attribue la date du jour.
<?php
/**
* Link wpr_posts_republish() with a wp_cron and execute it daily
*/
if ( ! wp_next_scheduled( 'wpr_posts_republish_hook' ) ) {
wp_schedule_event( time(), 'daily', 'wpr_posts_republish_hook' );
}
add_action( 'wpr_posts_republish_hook', 'wpr_posts_republish' );
/**
* Change the last posts date to today's date
*/
function wpr_posts_republish() {
$args = array(
'post_type' => 'post',
'posts_per_page' => 1,
'order' => 'ASC',
);
$my_query = new WP_Query( $args );
while ( $my_query->have_posts() ) {
$my_query->the_post();
$update_post = array(
'ID' => get_the_id(),
'post_date' => date( 'Y/m/d H:i:s' ),
'post_date_gmt' => date( 'Y/m/d H:i:s' ),
);
wp_update_post( $update_post );
}
wp_reset_postdata();
}
Par défaut, WordPress propose 3 intervalles de temps pour l’exécution des wp-cron :
- hourly : toutes les heures
- daily : tous les jours, c'est celui qui est utilisé ici
- twicedaily : tous les deux jours
Il est par ailleurs possible de créer vos propres intervalles en procédant comme ci-dessous.
<?php
/**
* Custom Cron Recurrences
*/
function wpr_custom_cron_job_recurrence( $schedules ) {
$schedules['weekly'] = array(
'display' => 'Once weekly',
'interval' => 604800,
);
return $schedules;
}
add_filter( 'cron_schedules', 'wpr_custom_cron_job_recurrence' );
Ici, nous créons un nouvel intervalle dont l'identifiant sera "weekly", le nom affiché sera "Once weekly" et le délai entre chaque exécution sera de 604800 secondes, ce qui équivaut à 7 jours. Une fois ce code ajouté, vous pourrez alors utiliser l'intervalle "weekly" comme s'il s'agissait d'un des trois intervalles par défaut de WordPress (hourly, daily et twicedaily).
Republish Old Posts : le plugin WordPress qui republie vos articles
Le plugin Republish Old Posts propose de nombreuses options comme conserver la date originale de l'article ou encore sélectionner les catégories des articles à republier. Cependant, et à mon grand regret, elle ne fonctionne que sur les articles (posts) et ne permet donc pas de republier vos propres posts types.