|
1 <?php |
|
2 /* |
|
3 Plugin Name: Pikslider |
|
4 Plugin URI: http://iri.centrepompidou.fr/ |
|
5 Description: Carousel slideshow pour la home du site de l'Iri, taille d'une image 568x300 |
|
6 Version: 0.1 |
|
7 Author: Anthony Ly |
|
8 Author URI: http://anthonyly.com |
|
9 */ |
|
10 |
|
11 add_action('init', 'pikslider_init'); |
|
12 add_action('add_meta_boxes','pikslider_metaboxes'); |
|
13 add_action('save_post','pikslider_savepost', 10, 2); |
|
14 add_action('manage_edit-slide_columns', 'pikslider_columnfilter'); |
|
15 add_action('manage_posts_custom_column', 'pikslider_column'); |
|
16 |
|
17 /** |
|
18 * Initialise le carousel |
|
19 **/ |
|
20 function pikslider_init(){ |
|
21 |
|
22 $labels = array( |
|
23 'name'=>'Slide', |
|
24 'singular_name'=>'Slide', |
|
25 'add_new'=>'Ajouter', |
|
26 'add_new_item'=>'Ajouter item', |
|
27 'edit_item'=>'Editer', |
|
28 'new_item'=>'Nouveau', |
|
29 'view_item'=>'Voir', |
|
30 'search_items'=>'Rechercher', |
|
31 'not_found'=>'Aucun slide', |
|
32 'not_found_in_trash'=>'Aucun slide dans la corbeille', |
|
33 'parent_item_colon'=>'', |
|
34 'menu_name'=>'Slides' |
|
35 ); |
|
36 |
|
37 register_post_type('slide', array( |
|
38 'public' => true, |
|
39 'publicly_queryable'=>false, |
|
40 'labels' => $labels, |
|
41 'capability_type'=>'post', |
|
42 'supports'=>array('title','editor', 'thumbnail') |
|
43 )); |
|
44 |
|
45 add_image_size('slider',568,300,true); |
|
46 } |
|
47 |
|
48 function pikslider_columnfilter($columns){ |
|
49 $thumb = array('thumbnail'=>'Image'); |
|
50 $columns = |
|
51 array_slice($columns,0,1) + |
|
52 $thumb + |
|
53 array_slice($columns,1,null); |
|
54 return $columns; |
|
55 } |
|
56 |
|
57 function pikslider_column($column){ |
|
58 global $post; |
|
59 if($column == 'thumbnail'){ |
|
60 edit_post_link(get_the_post_thumbnail($post->ID),'',''); |
|
61 } |
|
62 } |
|
63 |
|
64 /** |
|
65 * Permet de gérer les métaboxes |
|
66 **/ |
|
67 function pikslider_metaboxes(){ |
|
68 |
|
69 add_meta_box('pikslider','Lien','pikslider_metaboxe','slide','normal','high'); |
|
70 } |
|
71 |
|
72 function pikslider_metaboxe($object){ |
|
73 wp_nonce_field('pikslider','pikslider_nonce'); |
|
74 ?> |
|
75 <div class="meta-box-item-title"> |
|
76 <h4>Lien du slide</h4> |
|
77 </div> |
|
78 <div class="meta-box-item-content"> |
|
79 <input type="text" name="pikslider_link" style="width:100%" value="<?php echo esc_attr(get_post_meta($object->ID, '_link', true)); ?>" /> |
|
80 </div> |
|
81 <?php |
|
82 } |
|
83 |
|
84 function pikslider_savepost($post_id, $post){ |
|
85 |
|
86 if(!isset($_POST['pikslider_link']) || !wp_verify_nonce($_POST['pikslider_nonce'],'pikslider')){ |
|
87 return $post_id; |
|
88 } |
|
89 |
|
90 $type = get_post_type_object($post->post_type); |
|
91 if(!current_user_can($type->cap->edit_post)){ |
|
92 return $post_id; |
|
93 } |
|
94 |
|
95 update_post_meta($post_id,'_link',$_POST['pikslider_link']); |
|
96 } |
|
97 |
|
98 |
|
99 /** |
|
100 * Permet d'afficher le carousel |
|
101 **/ |
|
102 function pikslider_show(){ |
|
103 //import du javascript |
|
104 wp_enqueue_script( |
|
105 'caroufredsel', |
|
106 plugins_url().'/pik-slider/js/jquery.carouFredSel-6.1.0-packed.js', |
|
107 array('jquery'), |
|
108 '6.1.0', |
|
109 true |
|
110 ); |
|
111 wp_enqueue_style( |
|
112 'pikslider_style', |
|
113 plugins_url().'/pik-slider/css/pikslider-style.css', |
|
114 null, |
|
115 '1.0', |
|
116 'screen' |
|
117 ); |
|
118 |
|
119 add_action('wp_footer','pikslider_script',30); |
|
120 // HTML |
|
121 $slides = new WP_query('post_type=slide&posts_per_page=10'); |
|
122 ?> |
|
123 <div id="pikslider"> |
|
124 <ul> |
|
125 <?php |
|
126 while($slides->have_posts()){ |
|
127 $slides->the_post(); |
|
128 global $post; |
|
129 //détection de la langue |
|
130 if (class_exists('xili_language')) { |
|
131 $current_lang = the_cur_lang_dir(); |
|
132 if (get_cur_language($post->ID)!=$current_lang['lang']){continue;} |
|
133 } |
|
134 ?> |
|
135 <li><a href="<?php echo get_post_meta($post->ID, '_link', true); ?>"> |
|
136 <?php the_post_thumbnail('slider'); ?> |
|
137 <div class="pikslider-content"> |
|
138 <h2><?php echo the_title(); ?></h2> |
|
139 <?php echo the_content(); ?> |
|
140 </div> |
|
141 </a></li> |
|
142 <?php |
|
143 } |
|
144 ?> |
|
145 </ul> |
|
146 <a id="pikslider-prev" href="#"></a> |
|
147 <a id="pikslider-next" href="#"></a> |
|
148 </div> |
|
149 <?php |
|
150 } |
|
151 |
|
152 function pikslider_script(){ |
|
153 ?> |
|
154 <script type="text/javascript"> |
|
155 (function($){ |
|
156 $('#pikslider ul').carouFredSel({ |
|
157 prev: '#pikslider-prev', |
|
158 next: '#pikslider-next', |
|
159 auto : { pauseOnHover: "resume"}, |
|
160 scroll: 1000 |
|
161 }); |
|
162 $('#pikslider .caroufredsel_wrapper').css("margin",0); |
|
163 })(jQuery); |
|
164 </script> |
|
165 <?php |
|
166 } |