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

Article Comment republier automatiquement les posts WordPress sans plugin par @wpr0ck
twitter-img / 1024 x 512
Article Comment republier automatiquement les posts WordPress sans plugin par @wpr0ck
twitter-link / 520 x 254
Article Comment republier automatiquement les posts WordPress sans plugin par @wpr0ck
facebook / 1200 x 630

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 Ă  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
DĂ©veloppeur expert WordPress
Julien MA Jacob - DĂ©veloppeur WordPress

Passionné par le web et la programmation. Je propose mes services de développeur pour vos sites WordPress

  Discussion autour de l'article
guest
2 Commentaires
Le plus populaire
Le plus récent Le plus ancien
Commentaires en ligne
Afficher tous les commentaires
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.