Republier automatiquement vos articles WordPress

 WordPress  11 septembre 2017  Par Julien MA JACOB

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.