WordPress đŸ•°ïž Republier automatiquement les articles et post types

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
Partager sur twitter
Partager sur linkedin
Partager sur facebook
Partager sur whatsapp
Partager sur email

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 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.

Julien MA Jacob
DĂ©veloppeur WordPress
Julien MA Jacob - DĂ©veloppeur WordPress
PassionnĂ© par le web et la programmation avec toujours plein de projets en tĂȘte
  Discussion autour de l'article
S’abonner
Notifier de
guest
2 Commentaires
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
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

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.

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.