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 { visibility:visible; 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; } 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, )),
19 comments
LH
Hey, thank you so much for this! Works perfectly :) However, I have a sticky header and when I scroll down the navigation arrows stay at the front, i.e. they don’t hide behind the sticky header.
http://www.olwinhome.com
Any solutions?
Thanks!
Isac
Is it possible to hide in the mobile view?
Best regards,
Isac
Neil Gowran
You can just wrap the css in a media query to it displays on tablet +
Greg
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?
Sonny
add this to your functions file:
wp_enqueue_style( ‘font-awesome-free’, ‘//use.fontawesome.com/releases/v5.6.1/css/all.css’ );
Met
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(){ };
Alex
Laurent Houtman, the code usage the fontawesome, search in Google and problem resolved ;)
Laurent Houtman
Hello,
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 !
Kevin
You need to add this to your functions.php:
wp_enqueue_style( ‘font-awesome-free’, ‘//use.fontawesome.com/releases/v5.6.1/css/all.css’ );
Sonny
Hello,
Same problem for me. I also added the code for font-awesome-free, but nothing shows. In the js console log I get “3PC blocked” when I add the font-awesome-free code in function.php
Tami
I had the same problem and added the wp_enqueue_style( ‘font-awesome-free’, ‘//use.fontawesome.com/releases/v5.6.1/css/all.css’ ); to my functions.php however, it did not work I still have the white squares instead of the arrows.
Any Ideas?
Neil Gowran
Mette
Where should I add it in the functions.php file? I keep getting syntax error when adding it.
Neil Gowran
Use below – other code in comments had curly tick marks
Neil Gowran
PHP code goes in functions.php, CSS goes in your stylesheet or Customizer additional CSS – cant see any syntax errors in the PHP code
Andrea
same here keep getting syntax error no matter where i’m putting the line wp_enqueue_style( ‘font-awesome-free’, ‘//use.fontawesome.com/releases/v5.6.1/css/all.css’ ); inside the functions.php file
Neil Gowran
try
Aude
Same problem for me… did you find how to solve it? Thanks!
Kevin
You need to add this to your functions.php:
wp_enqueue_style( ‘font-awesome-free’, ‘//use.fontawesome.com/releases/v5.6.1/css/all.css’ );