How to build a WordPress image slider

Our last article about the Meteor slides plugin was about how to use the plugin for your WordPress website and doesn’t require any programming skills. My article today is about building a WordPress image slider from the ground up without using a plugin. Actually this is not totally true, because the tutorial is “only” about the WordPress part and we will be using a readymade slideshow plugin written in jQuery. I’m using the tutorial code for my own website as well, check the demo right below.

  • Simple slides code example

    Simple slides code

    Upload the Flexslider files and add the PHP code to theme's functions.php file.

  • Add or edit a simple slide

    Add simple slide

    Add or edit title, text, image or target URL by using the standard WordPress interface.

  • Sinple slides posts list

    Simple slides list

    All slides are grouped by the slide location taxonomy (here: tutorial).

WordPress image slider tutorial

WordPress image sliderMost image slider plugins are based on a third party slideshow plugin, written in jQuery or JavaScript. This is not surprising, because building a responsive and flexible slideshow is a different task than writing a few blocks of PHP code in WordPress. I’m going to show you how to use the same code most slider plugins use to integrate and control a slider function right in your WordPress blog post. I’m using Flexslider 2, a jQuery plugin maintained by WooThemes. WooThemes has built Flexslider 2 as the basis for their own premium WordPress themes and plugin. Reason enough to use their jQuery plugin for this WordPress tutorial. 

Prepare your WordPress theme 

All the tutorial code needs to be placed in your theme’s functions.php file, but before we can do that, we need to copy some files from the Flexslider jQuery plugin into the theme’s directory as well. Create a directory called flexslider in your themes directory. Download the Flexslider 2 plugin and upload the files flexslider.css and jquery.flexslider-min.js including the directories named fonts and images into the flexslider directory you just created.

The following two functions are used to include the necessary JavaScript and CSS code into your theme footer. I’m using a “special method” I’ve found on Scribu.net to include these files inside the footer to keep my theme files fast. Many plugin developers include JS/CSS files on every page, post or even archive pages. The function print_my_script() below will include the JS/CSS files only on those pages where the slider shortcode is actually used. 

The first function registers the JavaScript file and the second function will output (print) all the other code, including the code for Flexslider 2, into the footer of your theme. Note the variable $add_my_scripts is used as a kind of filter. I will explain later how this filter works.

Custom post type and taxonomy

I created a custom post type for all the different sliders I will later create for my website. The custom taxonomy is used to bundle these slides (posts) into one or more slideshows.

For the custom post type I use the set public to false to keep the slider posts out of the results from any  search engine. I do the same for the custom taxonomy named slide-loc. For the post type, I have enabled only the fields I really need. That includes the custom field, which I use for the target URL behind each slide.

The following small function is responsible for creating a post meta value for each slide. This value is used as a default URL value for the custom field.

WordPress image slider shortcode

The last part of code is used to show your slideshow inside a post, page, theme or any other place where the usage of a shortcode is possible.

This shortcode accepts 3 attributes: a slider location, the animation type and the slideshow speed. These values are passed to the database query or the JavaScript snippet. Do you remember the variable $add_my_script I’ve mentioned before? This “global” variable is set right in the shortcode function and takes care about that all Flexslider files are only included on pages or posts where the slideshow shortcode is used! All HTML code for the slideshow is created by this function.

Using the slideshow shortcode and final words

This tutorial is not written for the WordPress beginner, but I’m also sure it’s not too complicated. Just insert a few slides via the new custom post type you have created. Add also a location (custom taxonomy) if needed. Now you can use the three attributes to configure your slideshow a bit, for example the shortcode would be:

This shortcode will show all slides with custom taxonomy “homepage” (the slug) and show them in animation mode “slide” (you can also use “fade”) and the speed is set to 5 seconds. The attributes are not required and if you like to have more options you can add them to the function with the name print_my_spript(). This page shows all available Flexslider 2 properties.

The tutorial code doesn’t have some special style for the slideshow. If you like to use the same style as I used for my demo, copy/paste this CSS code into your theme’s stylesheet.

I’ve put this code together into a plugin, but to get this working you need to upload the Flexslider jQuery plugin into to your WordPress theme directory (check the first part from this tutorial). 

5 thoughts on “How to build a WordPress image slider

  1. This is very helpful post for those who want to build WordPress image slider. I just want to know one thing, why you don’t keep the custom post type “public”, because of search engine crawling or there is another reason?

    • I don’t make the custom post type public to keep them out of the search index. It happens so often that I install a plugin and notice that a huge number of new pages is generated. Pages I don’t like to see in the Google search engine. Sure you can make the noindex with WordPress SEO by Yoast, but it’s much better to use that option. Don’t you think?

      • Thanks for reply back to my questions .Next time we will definitely use this option. Thanks once again for publishing such valuable information.

  2. I don’t get how to use your slider now. I integrated everything the way you explained in your tutorial, but I can’t seem to figure out how to use it. Tried a bunch of stuff, but it’s simply not clear how you add slider images to the slider. Maybe you should explain that in your tutorial.

    • Hi,

      like I mentioned in my article, this tutorial is not for a beginner ;) Indeed the information that the user need to fill some slide posts was missing. I added this sentence to make that clear too.
      You need to insert the slides using the new custom post type. After that you can use the shortcode in any page/post/theme you like.

Comment Rules

Don’t post your code here, post your code block or snippet to pastebin and include the pastebin URL in your comment.

I delete all comments with non related links inside the comment text. Don't use keywords for the field of your real name (most people like to use your name for their answer). Keep your comment related to the topic, if your question is off-topic, please use the contact form instead.

Leave a Reply to Iquincesoft Cancel reply

Your email address will not be published. Required fields are marked *

*
*
Website