WordPress : Republier automatiquement les articles et post types

Partager sur email
Email
Partager sur twitter
Twitter
Partager sur linkedin
LinkedIn
Partager sur facebook
Facebook
Partager sur email
Partager sur twitter
Partager sur linkedin
Partager sur facebook
Article Comment republier automatiquement les posts WordPress sans plugin par @wpr0ck
Article Comment republier automatiquement les posts WordPress sans plugin par @wpr0ck
Article Comment republier automatiquement les posts WordPress sans plugin par @wpr0ck
Article Comment republier automatiquement les posts WordPress sans plugin par @wpr0ck

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 procédé 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 à intervalle régulier. La seconde partie du code, quant à lui, se compose d’une requête qui appelle le post le plus ancien et qui lui attribut la date du jour.

**
 * Link posts_republish() with a wp_cron and execute it daily
 */
if ( ! wp_next_scheduled( 'posts_republish_hook' ) ) {
    wp_schedule_event( time(), 'daily', 'posts_republish_hook' );
}
add_action( 'posts_republish_hook', 'posts_republish' );

/**
 * Change the last posts date to today's date
 */
function 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 également possible de créer vos propres intervalles en procédant comme ci-dessous.

/**
 * Custom Cron Recurrences
 */
function custom_cron_job_recurrence( $schedules ) {
  $schedules['weekly'] = array(
    'display' => 'Once weekly',
    'interval' => 604800,
  );
  return $schedules;
}
add_filter( 'cron_schedules', '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 ajouter, vous pourrez alors utiliser l’intervalle « weekly » comme s’y 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 article

Le plugin Republish Old Posts propose de nombreuses options comme conserver la date original 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 propre posts types.

Julien MA Jacob
Développeur WordPress
Passionné par le web et la programmation avec toujours plein de projets en tête
  Des livres pour approfondir le sujet
  Hey ! Ces articles aussi devraient vous plaire
  Discussion autour de l'article
avatar
1 Fils de commentaires
1 Réponses de fil
0 Abonnés
 
Commentaire avec le plus de réactions
Le plus populaire des commentaires
1 Auteurs du commentaire
bjm Auteurs de commentaires récents
  S’abonner  
plus récent plus ancien Le plus populaire
Notifier de
bjm
Invité
bjm

Et si on veut republier l’intégralité des articles tous les 15 jours par exemple sans toucher à l’heure, cela serait possible ?

bjm
Invité
bjm

Merci Julien MA Jacob pour ce code. Je me réponds à moi-même. Mon site internet est un site vitrine donc la date de publication de mes articles n’a pas d’impotence, par contre l’ordre dans lesquels ils s’affichent a une importance j’ai donc cherché à modifier votre script afin de rafraîchir les dates de publication de tous les articles automatiquement tous les 14 jours afin de paraître dans les résultats de recherche les personnes qui règlent les paramètre de recherche de Google sur « moins d’un mois » Pour cela il faut récupérer le nombre d’article publié. Puis faire une boucle qui va remonter le dernier article et faire cela autant de fois qu’il y a d’article publié. Toutefois tous les articles se retrouvent avec la même date de publication et cela met la pagaille dans l’ordre des articles. Afin d’éviter cela il faut faire une pose entre chaque boucle. On obtient le code suivant. < ?php /** * Link republier_articles() with a wp_cron and execute it bimensuel */ if ( ! wp_next_scheduled( 'republier_articles_hook' ) ) { wp_schedule_event( time(), 'bimensuel', 'republier_articles_hook' ); } add_action( 'republier_articles_hook', 'republier_articles' ); /** * Change la date de l'article à la date du jour */ function republier_articles() { $nombre_article = (wp_count_posts('post')->publish); while ($nombre_article >= 1) { $nombre_article--; sleep(2); $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(); } } //*** Fin de Republier vos anciens articles automatiquement */ Les articles conservent bien leur ordre, mais il y un « mais » Pour la gestion du RGPD j’utilise le code « Inclure tarteaucitron.js » https://opt-out.ferank.eu/fr/ et pour les vidéos YouTube il faut remplacer le code par Hors WordPress a une fonction de correction de code automatique qu’il effectue à chaque republication des articles automatiquement et il efface le code qu’il estime incorrecte, les vidéos sont donc retirés. Ce problème doit certainement affecter les personnes qui utilisent le code que vous avez fourni pour remonter pour remonter le dernier article. La solution serait de déactiver temporairement le formatage du code par wordpress lors de la réalisation de la boucle mais pour l’instant je sèche. Si vous avez une piste ou solution je suis preneur.