Dans cet article nous allons voir comment créer un slider avec un custom post type sans plugin !

En effet beaucoup de plugins de sliders sont trop gourmands en ressources et il est facile d’en créer un à notre goût !

Nous allons utiliser les librairies Bootstrap.

Importer les librairies

Dans le fichier header.php avant la fermeture de la balise <head> placer le code suivant :

<script src= "//code.jquery.com/jquery-1.11.0.min.js "></script>
<link href= "//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css " rel= "stylesheet " id= "bootstrap-css ">
<script src= "//netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js "></script>

Custom post type slider

Copier coller le code suivant dans le functions.php du thème courant afin de créer le CPT :

function create_slider_post_type() {$labels = array(
'name' => __( 'Sliders' ),
'singular_name' => __( 'Sliders' ),
'all_items' => __( 'Toutes les slides' ),
'view_item' => __( 'Voir slide' ),
'add_new_item' => __( 'Ajouter une nouvelle slide' ),
'add_new' => __( 'Ajouter une nouvelle slide' ),
'edit_item' => __( 'Editer slide' ),
'update_item' => __( 'Mettre à jour slide' ),
'search_items' => __( 'Rechercher une slide' ),
'search_items' => __('Sliders')
);$args = array(
'labels' => $labels,
'description' => 'Add New Slider contents',
'menu_position' => 30, /**valeur de votre choix**/
'public' => true,
'has_archive' => true,
'map_meta_cap' => true,
'capability_type' => 'post',
'hierarchical' => true,
'rewrite' => array('slug' => false),
'menu_icon'=>'dashicons-format-image', /**valeur de votre choix : https://developer.wordpress.org/resource/dashicons/#editor-underline **/
'supports' => array(
'title',
'thumbnail','excerpt'
),
);
register_post_type( 'slider', $args);}
add_action( 'init', 'create_slider_post_type' );

Boucle slider

Et enfin voici la boucle à copier coller dans le template de votre choix :

<div class="container">

<div class="row">
<?php
$arg = array(
'post_type' => 'slider',
'posts_per_page' => 5,
'order' => 'ASC'
);
$slider = new WP_Query($arg);
$j = 0;
$post_count = wp_count_posts('slider')->publish;
?>
<!-- Carousel -->
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<!-- Indicators -->

<!-- Wrapper for slides -->
<div class="carousel-inner">
<?php while($slider->have_posts()) : $slider->the_post(); ?>
<div class="item<?php echo $j==0 ? ' active': '';?>">
<?php if(has_post_thumbnail()): the_post_thumbnail('slider'); endif; ?>
<!-- Static Header -->
<div class="header-text hidden-xs">
<div class="col-md-12 text-center">
<h2>
<?php the_title() ?>
</h2>
<br>
<h3>
<a href="<?php echo get_post_meta(get_the_ID(),'_slider_link_value_key', true); ?>"><span><?php the_excerpt(); ?></span></a>
</h3>
</div>
</div><!-- /header-text -->
</div>
<?php $j++; endWhile; wp_reset_query(); ?>
</div>
<!-- Controls -->
<a class="left carousel-control" href="#carousel-example-generic" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left"></span>
</a>
<a class="right carousel-control" href="#carousel-example-generic" data-slide="next">
<span class="glyphicon glyphicon-chevron-right"></span>
</a>
</div><!-- /carousel -->
</div>
</div>

Surcouche ACF

Si vous avez plusieurs sliders à placer sur plusieurs pages une surcouche ACF vous permettra de modifier la boucle. En créant un champ de type checkbox.

if (is_page_template('page-une.php')){$value='une';} //vos valeurs avec vos conditions qui sont reprises dans le champ ACF
if (is_page_template('page-deux.php')){$value='deux';} //vos valeurs avec vos conditions qui sont reprises dans le champ ACF
if (is_home()){$value='trois';} //vos valeurs avec vos conditions qui sont reprises dans le champ ACF

$arg = array(
'post_type' => 'slider',
'posts_per_page' => 5,
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'slide_in',
'value' => $value,
'compare' => 'LIKE',
),
),
);
$slider = new WP_Query($arg);

Champ ACF

if( function_exists('acf_add_local_field_group') ):

acf_add_local_field_group(array(
'key' => 'group_6113ddf38694e',
'title' => 'slider',
'fields' => array(
array(
'key' => 'field_6113ddf878173',
'label' => 'Slider présent sur :',
'name' => 'slide_in',
'type' => 'checkbox',
'instructions' => '',
'required' => 0,
'conditional_logic' => 0,
'wrapper' => array(
'width' => '',
'class' => '',
'id' => '',
),
'choices' => array(
'une' => 'Page une', //vos valeurs
'deux' => 'Page deux', //vos valeurs
'trois' => 'Page trois', //vos valeurs
),
'allow_custom' => 0,
'default_value' => array(
),
'layout' => 'vertical',
'toggle' => 0,
'return_format' => 'value',
'save_custom' => 0,
),
),
'location' => array(
array(
array(
'param' => 'post_type',
'operator' => '==',
'value' => 'slider',
),
),
),
'menu_order' => 0,
'position' => 'normal',
'style' => 'default',
'label_placement' => 'top',
'instruction_placement' => 'label',
'hide_on_screen' => '',
'active' => true,
'description' => '',
));

endif;

Et voici un joli slider moins gourmand !

0 0 votes
Article Rating
S’abonner
Notification pour
guest
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires