You can add Navigation Arrows in WooCommerce Product Gallery by adding a filter and then some CSS. WooCommerce uses a slider called Flexslider and it has a few more configurable options.

In functions.php add

add_filter( 'woocommerce_single_product_carousel_options', 'sf_update_woo_flexslider_options' );
 * Filer WooCommerce Flexslider options - Add Navigation Arrows
function sf_update_woo_flexslider_options( $options ) {

    $options['directionNav'] = true;

    return $options;

Then style in some CSS

ul.flex-direction-nav {
    position: absolute;
    top: 30%;
    z-index: 99999;
    width: 100%;
    left: 0;
    margin: 0;
    padding: 0px;
    list-style: none;}

li.flex-nav-prev {float: left;}
li.flex-nav-next {float: right;}
a.flex-next {visibility:hidden;}
a.flex-prev {visibility:hidden;}

a.flex-next::after {
	visibility:visible;content: '\f054';
	font-family: 'Font Awesome 5 Free';
	margin-right: 10px;
	font-size: 20px;   
	font-weight: bold;
a.flex-prev::before {
    content: '\f053';
	font-family: 'Font Awesome 5 Free';   
	margin-left: 10px;
	font-size: 20px;
	font-weight: bold;
ul.flex-direction-nav li a {
	color: #ccc;
ul.flex-direction-nav li a:hover {
	text-decoration: none;

The flexslider has some more options you can manipulate…

'flexslider'  => apply_filters( 'woocommerce_single_product_carousel_options', array(
    'rtl'            => is_rtl(),
    'animation'      => 'slide',
    'smoothHeight'   => true,
    'directionNav'   => false,
    'controlNav'     => 'thumbnails',
    'slideshow'      => false,
    'animationSpeed' => 500,
    'animationLoop'  => false, // Breaks photoswipe pagination if true.
    'allowOneSlide'  => false,

Ref & Ref


  1. Greg on December 8, 2020 at 5:59 am

    Looks great and works for the main image. DO you know how I can get something similar to work with the gallery images. So if I have more images horizontal of vertical it adds an arrow each side or top and bottom to navigate through the gallery images?

  2. Sonny on May 16, 2020 at 11:17 pm

    add this to your functions file:

    wp_enqueue_style( ‘font-awesome-free’, ‘//’ );

  3. Met on February 24, 2020 at 4:51 pm

    Hello there thanks for the article,

    How to use with before function ?

    Whenever flexslider changes is it possible to console log something ?

    It has callback api in the code such as
    before : function(){ };

  4. Alex on October 22, 2019 at 4:30 pm

    Laurent Houtman, the code usage the fontawesome, search in Google and problem resolved ;)

  5. Laurent Houtman on August 28, 2019 at 2:19 pm


    Thank you for your article !

    But when i put the css and java on my website, the arrow icons are not showing and there are white square instead of the arrows… Any ideas why ?

    thank you !

Leave a Comment