Enfold 테마의 탭 섹션에 오토 슬라이드 기능을 추가하기
Enfold 테마의 탭 섹션에 오토 슬라이드 기능을 추가하기
Enfold 테마의 탭 섹션에 오토 슬라이드 기능을 추가하려면 JavaScript를 사용해야 합니다. Enfold 테마는 avia.js 파일을 통해 다양한 인터랙션을 관리하며, 탭 자동 전환을 위해 아래와 같은 코드를 추가하면 됩니다.
1. Enfold 테마의 커스텀 JS 파일에 코드 추가
Enfold 테마의 functions.php 파일에 아래 코드를 추가하여, custom.js 파일을 불러올 수 있도록 합니다.
function enqueue_custom_scripts() {
wp_enqueue_script('custom-tabs-auto-slide', get_stylesheet_directory_uri() . '/js/custom-tabs-auto-slide.js', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'enqueue_custom_scripts');
2. custom-tabs-auto-slide.js 파일 생성 후 아래 코드 추가
아래 코드를 사용하여 탭이 일정 간격마다 자동으로 변경되도록 설정합니다.
jQuery(document).ready(function ($) {
var tabInterval = 5000; // 5초마다 변경
var transitionDelay = 600; // 애니메이션 전환 속도 (Enfold 기본 값)
var $tabs = $(".av-tab-section-tab-title-container .av-section-tab-title");
var tabCount = $tabs.length;
var currentIndex = 0;
var tabSlider = null;
var isUserInteracted = false;
function switchTab() {
currentIndex = (currentIndex + 1) % tabCount;
// 현재 활성화된 탭을 클릭하여 변경
$tabs.eq(currentIndex).trigger("click");
}
function startAutoSlide() {
if (tabSlider) return; // 중복 실행 방지
tabSlider = setInterval(switchTab, tabInterval);
}
function stopAutoSlide() {
clearInterval(tabSlider);
tabSlider = null; // `null`로 초기화하여 재실행 가능하도록 설정
}
// 오토 슬라이드 시작
startAutoSlide();
// 사용자가 탭을 클릭하면 자동 슬라이드 멈추고 일정 시간 후 다시 시작
$tabs.on("click", function () {
if (!isUserInteracted) {
isUserInteracted = true;
}
stopAutoSlide();
setTimeout(function () {
isUserInteracted = false;
startAutoSlide();
}, 10000); // 10초 후 다시 자동 슬라이드 시작
});
// 첫 번째 탭을 강제로 클릭하여 초기화
$tabs.eq(0).trigger("click");
});
개선된 점
setInterval() 중복 실행 방지
startAutoSlide()함수에서if (tabSlider) return;조건을 추가하여 한 번만 실행되도록 설정.stopAutoSlide()에서clearInterval(tabSlider);실행 후tabSlider = null;로 초기화하여 다시 실행 가능하도록 수정.
사용자 클릭 이벤트 처리
- 사용자가 클릭하면
isUserInteracted변수를true로 변경하여 수동 조작 시 오토 슬라이드 중지. - 10초 후
isUserInteracted를false로 다시 변경하여 자동 슬라이드 재개.
애니메이션 유지
setTimeout()을switchTab()안에서 사용하지 않고, 사용자 인터랙션 후 재실행 시에만 사용하여 중복 실행을 방지.


