jmlapam

Untitled

Jun 24th, 2014
213
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. // TRES RAPIDEMENT ET SANS VOIR TOUS LES DETAILS
  4. // 1ère salve de corrections du code, plugins_url() notamment voir le codex, il manquait un éditeur au post type
  5.  
  6. // tu peux aussi checker s'il y a bien une thumbnail avant d'écrire le HTML pareil pour les catégories de projets
  7.  
  8.  
  9. /**
  10. * Plugin Name: Hadouweb Portfolio Isotope
  11. * Plugin URI: hadouweb.fr
  12. * Description: Un portfolio dynamique avec Isotope et Fancybox.
  13. * Version: 0.3
  14. * Author: Nicolas Le Breton
  15. * Author URI: http://hadouweb.fr
  16. * License: GPL2
  17. */
  18.  
  19. function custom_post_type() {
  20.  
  21. $labels = array(
  22. 'name' => ( 'Portfolio' ), // Le nom de mon menu
  23. 'singular_name' => ( 'Portfolio' ),
  24. 'all_items' => ( 'Tous les projets' ),
  25. 'view_item' => ( 'Voir le projet' ),
  26. 'add_new_item' => ( 'Ajouter un projet' ),
  27. 'add_new' => ( 'Ajouter' ),
  28. 'edit_item' => ( 'Editer un projet' ),
  29. 'update_item' => ( 'Mettre à jour' ),
  30. 'search_items' => ( 'Rechercher un projet' ),
  31. 'not_found' => ( 'Aucun résultat' ),
  32. 'not_found_in_trash' => ( 'Aucun résultat dans la corbeille' )
  33. );
  34. $args = array(
  35. 'labels' => $labels,
  36. 'supports' => array('title', 'thumbnail', 'editor'), // Permet de définir les éléments à ajouter pour notre type de contenu.
  37. 'public' => true,
  38. 'show_ui' => true,
  39. 'show_in_menu' => true,
  40. 'show_in_admin_bar' => true, // Pour l'ajouter dans la barre d'admin en haut dans l'onglet "Créer"
  41. 'menu_icon' => 'dashicons-format-gallery', // Nom de l’icône
  42. 'can_export' => true,
  43. 'has_archive' => true,
  44. 'exclude_from_search' => false,
  45. 'publicly_queryable' => true,
  46. 'capability_type' => 'page', // Permet de spécifier que l'utilisateur possède les mêmes droits qu'il a sur les pages
  47. );
  48. register_post_type( 'portfolio', $args );
  49.  
  50. register_taxonomy(
  51. 'project-cat',
  52. 'portfolio',
  53. array(
  54. 'label' => __( 'Catégories de projets' ),
  55. 'rewrite' => array( 'slug' => 'project-cat' ),
  56. 'hierarchical' => true,
  57. )
  58. );
  59.  
  60. }
  61.  
  62. add_action( 'init', 'custom_post_type');
  63.  
  64.  
  65. function portfolio_scripts() {
  66.  
  67.  
  68. // Scripts
  69. wp_enqueue_script( 'isotope', plugins_url('js/isotope.min.js', __FILE__), array(), '2.0.0', true );
  70. wp_enqueue_script( 'portfolio-script', plugins_url('js/portfolio.js', __FILE__), array(), '0.1', true );
  71. wp_enqueue_script( 'fancybox-script', plugins_url('js/fancybox.min.js', __FILE__), array(), '2.1.5', true );
  72.  
  73. // Styles
  74. wp_enqueue_style( 'portfolio-style', plugins_url('css/portfolio.css', __FILE__) );
  75. wp_enqueue_style( 'fancybox-style', plugins_url('css/fancybox.css', __FILE__) );
  76.  
  77.  
  78. }
  79. add_action( 'wp_enqueue_scripts', 'portfolio_scripts' );
  80.  
  81.  
  82. function hafolio_func( $atts ) {
  83.  
  84. $a = shortcode_atts( array(
  85. 'cat' => '',
  86. 'nbr' => '',
  87. ), $atts );
  88.  
  89. $cats = explode( ',', $a['cat'] );
  90. $nbr = $a['nbr'];
  91.  
  92. if (!empty($cats)) {
  93. foreach ($cats as $cat ) {
  94. $filters[$cat] = get_term_by('slug', $cat, 'project-cat');
  95. }
  96. }else{
  97. $filters = get_terms( 'project-cat' );
  98. }
  99.  
  100. if (empty($nbr)) {
  101. $nbr = '-1';
  102. }
  103.  
  104. $result = '';
  105.  
  106. $result .= '<div id="filters" class="button-group">
  107. <button class="button is-checked" data-filter="*">Tous</button>';
  108.  
  109. foreach ($cats as $cat ) {
  110. $result .= '<button class="button" data-filter=".'.$filters[$cat]->slug.'">'.$filters[$cat]->name.'</button>';
  111. }
  112.  
  113. $result .= '</div>';
  114.  
  115. $result .= '<div class="isotope">';
  116.  
  117. $args = array (
  118. 'post_type' => 'portfolio',
  119. 'posts_per_page' => $nbr
  120. );
  121.  
  122. $query = new WP_Query( $args );
  123.  
  124. if ( $query->have_posts() ) :
  125.  
  126. while ( $query->have_posts() ) : $query->the_post();
  127.  
  128. $url = wp_get_attachment_url( get_post_thumbnail_id($query->post->ID) );
  129. $filter = wp_get_post_terms( $query->post->ID, 'project-cat');
  130.  
  131. $result .= '<div class="element-item transition '.$filter[0]->slug.' data-category="transition">
  132. <a class="fancybox" rel="all" href="'.$url.'">
  133. '.get_the_post_thumbnail($query->post->ID, 'medium').'
  134. </a>
  135. </div>';
  136.  
  137. endwhile;
  138.  
  139. wp_reset_postdata();
  140.  
  141. $result .= '</div>';
  142.  
  143. endif;
  144.  
  145. return $result;
  146. }
  147. add_shortcode( 'hafolio', 'hafolio_func' );
  148. ?>
RAW Paste Data