
WordPress 위젯은 사이드바, 푸터 등 특정 영역에 원하는 기능을 추가할 수 있는 강력한 도구입니다. 이번 가이드에서는 커스텀 위젯을 개발하는 방법을 단계별로 설명합니다.
1. 커스텀 위젯이란?
WordPress의 위젯은 관리자 패널에서 쉽게 추가, 제거할 수 있는 요소로, 보통 사이드바, 푸터, 헤더 등에 배치됩니다. 기본적으로 제공되는 “최근 글”, “카테고리”, “검색” 등의 위젯 외에도 커스텀 위젯을 직접 제작하여 원하는 기능을 추가할 수 있습니다.
1.1. 커스텀 위젯 활용 예시
- 최신 글 목록 위젯
- 인기 글 위젯
- 사용자 프로필 표시 위젯
- 소셜 미디어 링크 위젯
- 날씨 정보 표시 위젯
2. 기본적인 커스텀 위젯 코드 구조
2.1. 플러그인 폴더 및 파일 생성
커스텀 위젯을 플러그인으로 만들기 위해 /wp-content/plugins/my-custom-widget/
폴더를 생성하고, my-custom-widget.php
파일을 작성합니다.
<?php
/*
Plugin Name: My Custom Widget
Plugin URI: https://example.com/
Description: 기본적인 WordPress 커스텀 위젯 플러그인
Version: 1.0
Author: 개발자명
Author URI: https://example.com/
License: GPL2
*/
// 위젯 클래스 정의
class My_Custom_Widget extends WP_Widget {
function __construct() {
parent::__construct(
'my_custom_widget',
__('My Custom Widget', 'text_domain'),
array('description' => __('사용자 정의 위젯 예제', 'text_domain'))
);
}
// 위젯 출력 (프론트엔드)
function widget($args, $instance) {
echo $args['before_widget'];
echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title'];
echo "<p>안녕하세요! 이것은 커스텀 위젯입니다.</p>";
echo $args['after_widget'];
}
// 위젯 설정 폼 (관리자 화면)
function form($instance) {
$title = isset($instance['title']) ? $instance['title'] : __('기본 제목', 'text_domain');
?>
<p>
<label for="<?php echo esc_attr($this->get_field_id('title')); ?>"><?php _e('제목:'); ?></label>
<input class="widefat" id="<?php echo esc_attr($this->get_field_id('title')); ?>"
name="<?php echo esc_attr($this->get_field_name('title')); ?>"
type="text" value="<?php echo esc_attr($title); ?>">
</p>
<?php
}
// 위젯 설정 저장
function update($new_instance, $old_instance) {
$instance = array();
$instance['title'] = (!empty($new_instance['title'])) ? sanitize_text_field($new_instance['title']) : '';
return $instance;
}
}
// 위젯 등록
function register_my_custom_widget() {
register_widget('My_Custom_Widget');
}
add_action('widgets_init', 'register_my_custom_widget');
3. 위젯 코드 설명
3.1. __construct()
– 위젯 초기 설정
ID
,이름
,설명
을 정의합니다.- 이 값들은 WordPress 관리자 패널에서 위젯을 추가할 때 표시됩니다.
3.2. widget()
– 위젯 출력 (프론트엔드)
- 실제 웹사이트에서 표시될 내용을 정의합니다.
before_widget
,before_title
,after_title
등의 변수를 사용하면 테마의 스타일을 유지하면서 위젯이 표시됩니다.
3.3. form()
– 관리자 패널에서 위젯 설정 화면 제공
input
필드를 통해 제목을 입력받습니다.get_field_id()
,get_field_name()
을 사용하여 각 필드가 고유한 ID와 이름을 갖도록 합니다.
3.4. update()
– 설정 저장 기능
sanitize_text_field()
를 사용하여 입력값을 필터링하고 보안을 강화합니다.
3.5. register_widget()
– 위젯 등록
widgets_init
액션 훅을 사용하여register_widget('My_Custom_Widget')
을 실행합니다.
4. 위젯 추가 및 활용 방법
4.1. 플러그인 활성화
wp-content/plugins/
폴더에my-custom-widget
폴더를 업로드합니다.- WordPress 관리자 → 플러그인 → “My Custom Widget” 플러그인을 활성화합니다.
4.2. 위젯 추가하기
- WordPress 관리자 → 외모(테마) → 위젯
- My Custom Widget을 선택하여 원하는 위치(사이드바, 푸터 등)에 추가
- 제목을 입력하고 저장
5. 위젯에 스타일(CSS) 적용
위젯의 디자인을 변경하려면 CSS 파일을 추가하면 됩니다.
style.css
파일 추가 후 플러그인에서 불러오기:
function my_custom_widget_styles() {
wp_enqueue_style('my-custom-widget-style', plugins_url('style.css', __FILE__));
}
add_action('wp_enqueue_scripts', 'my_custom_widget_styles');
CSS 스타일 예제 (style.css
파일)
.my-custom-widget {
background-color: #f4f4f4;
padding: 15px;
border-radius: 5px;
}
.my-custom-widget h2 {
color: #333;
font-size: 18px;
}
6. 추가 기능 확장하기
- AJAX 추가: 사용자 입력을 받아 동적으로 콘텐츠 변경
- 데이터베이스 연동: 인기 글 목록 표시
- REST API 연동: 외부 API에서 날씨 정보 가져오기
- 이미지 업로드 기능: 관리자에서 이미지 업로드 가능하도록 설정
7. 결론
WordPress에서 커스텀 위젯을 추가하면 원하는 기능을 사이드바나 푸터에 쉽게 배치할 수 있습니다. 본 글에서는 기본적인 위젯 생성부터 관리자 설정, 스타일 적용, 추가 기능 확장까지 다뤘습니다.