Advertisement
mbcreation

Sitemap-news.xml

May 25th, 2022
677
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3.  
  4. // Interception de la requête "sitemap-news.xml"
  5. // Grâce à une fonction sur le filtre "template_include"
  6.  
  7. add_filter( 'template_include', 'devblog_fr_sitemap_news', 1 );
  8.  
  9.  
  10. function devblog_fr_sitemap_news( $template ) {
  11.  
  12.     // Si l'url est en 404 (n'existe pas) et contien l'url de notre sitemap
  13.     // Nous déclenchons notre fonction d'affichage.
  14.     if( is_404() && strpos( $_SERVER['REQUEST_URI'], 'sitemap-news.xml' ) !== false )
  15.         devblog_display_sitemap_news();
  16.  
  17.     return $template;
  18.  
  19. }
  20.  
  21.  
  22. function devblog_display_sitemap_news(){
  23.  
  24.     // Nous allons rendre directement le contenu du sitemap
  25.     // plutôt qu'un fichier.
  26.     // Le contenu sera l'ensemble des articles publiés depuis moins de
  27.     // 48 heures conformément à la recommandation de Google.
  28.     header("HTTP/1.1 200 OK");
  29.     nocache_headers();
  30.     header("Content-type: text/xml");
  31.  
  32.     echo '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
  33.  
  34.     echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"  xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">'.PHP_EOL;
  35.  
  36.     $args = array(
  37.         'post_type' => 'post',
  38.         'post_statys' => 'publish',
  39.         'date_query' => array(
  40.             array(
  41.                 'column' => 'post_modified_gmt',
  42.                 'after'  => '2 day ago',
  43.             ),
  44.         ),
  45.         'posts_per_page' => -1,
  46.     );
  47.  
  48.     $query = new WP_Query( $args );
  49.  
  50.     if( !empty( $query->posts ) ) :
  51.  
  52.         foreach ( $query->posts as $key => $post) {
  53.  
  54.  
  55.             echo '<url>'.PHP_EOL;
  56.  
  57.             echo '<loc>'.trailingslashit( get_permalink( $post->ID ) ).'</loc>'.PHP_EOL;
  58.             echo '<news:news>'.PHP_EOL;
  59.             echo '<news:publication>'.PHP_EOL;
  60.             echo '<news:name>'.get_bloginfo('name').'</news:name>'.PHP_EOL;
  61.             echo '<news:language>'.substr( get_bloginfo('language'), 0, 2).'</news:language>'.PHP_EOL;
  62.             echo '</news:publication>'.PHP_EOL;
  63.             echo '<news:publication_date>'.get_the_date('c', $post->ID ).'</news:publication_date>'.PHP_EOL;
  64.             echo '<news:title>'.get_the_title($post->ID).'</news:title>'.PHP_EOL;
  65.             echo '</news:news>'.PHP_EOL;
  66.             echo '</url>'.PHP_EOL;
  67.         }
  68.  
  69.     endif;
  70.  
  71.     echo '</urlset>'.PHP_EOL;
  72.  
  73.     exit;
  74.  
  75. }
Advertisement
RAW Paste Data Copied
Advertisement