SHARE
TWEET

Créer un shortcode WordPress : articles et taxonomies

pskli Mar 20th, 2013 922 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php function shortcode_series($param) {
  2.         extract(
  3.                 shortcode_atts(
  4.                         array(
  5.                                 'title' => 'Article n°<strong>%nb%</strong> de la série <em>%serie%</em>'
  6.                         ),
  7.                         $param
  8.                 )
  9.         );
  10.  
  11.         global $post;
  12.  
  13.         // Dans quel taxonomie "Série" est catégorisé notre article ?
  14.         $serie = wp_get_post_terms($post->ID, 'serie');
  15.  
  16.  
  17.         // Si fait partie d'une série, récupérer des informations cruciales sur cette série (nom, slug)
  18.         if (!empty($serie)) {
  19.                 $serie_name = $serie[0]->name;
  20.                 $serie_slug = $serie[0]->slug;
  21.         }
  22.  
  23.         // Récupérons les AUTRES articles de cette série
  24.         $posts_in_serie = get_posts(
  25.                 array(
  26.                         'orderby' => 'date',
  27.                         'order' => 'ASC',
  28.                         'tax_query' => array(
  29.                                 array(
  30.                                         'taxonomy' => 'serie',
  31.                                         'field' => 'slug',
  32.                                         'terms' => $serie_slug
  33.                                 )
  34.                         )
  35.                 )
  36.         );
  37.  
  38.         $serie_data = array();
  39.  
  40.         foreach ($posts_in_serie as $k=>$post_in_serie) {
  41.                 if ($post->ID == $post_in_serie->ID) { $current_post_index = $k+1; }
  42.  
  43.                 $serie_data[] = array(
  44.                         'id' => $post_in_serie->ID,
  45.                         'title' => $post_in_serie->post_title
  46.                 );
  47.         }
  48.  
  49.         // Modifier les marqueurs %nb% et %serie% par les valeurs correctes à afficher
  50.  
  51.         $nice_title = str_replace('%nb%', $current_post_index, $title);
  52.         $nice_title = str_replace('%serie%', $serie_name, $nice_title);
  53.  
  54.         // Afficher la liste des articles de notre série
  55.  
  56.         ob_start();
  57.  
  58.         echo '<section id="post-serie" class="clearfix">';
  59.         echo '<h4>' . $nice_titlewp_specialchars_decode() . '</h4>';
  60.  
  61.         echo '<ol>';
  62.         foreach ($serie_data as $article) {
  63.                 if ($article['id'] == $post->ID) {
  64.                         echo '<li><strong>' . $article['title'] . '</strong></li>';
  65.                 } else {
  66.                         echo '<li><a href="' . get_permalink($article['id']) . '" title="' . esc_attr($article['title']) . '">' . $article['title'] . '</a></li>';
  67.                 }
  68.         }
  69.         echo '</ol>';
  70.         echo '</section>';
  71.  
  72.         $post_serie_data = ob_get_contents();
  73.         ob_end_clean();
  74.  
  75.         return $post_serie_data;
  76. }
  77. add_shortcode('series', 'shortcode_series');
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top