web/wp-content/plugins/pik-slider/pik-slider.php
changeset 194 32102edaa81b
child 196 5e8dcbe22c24
equal deleted inserted replaced
193:2f6f6f7551ca 194:32102edaa81b
       
     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 }