친절한 우리 고모

친절한 고모의 친절한 이야기

  • 2025. 4. 25.

    by. 친절한 고모

    목차

      🧠 왜 직접 플러그인을 만들어야 할까?

      • functions.php에 기능 추가하다가 구조가 엉망이 되셨나요?
      • 테마를 바꿀 때마다 기능이 사라지나요?
      • 사이트마다 반복 사용하는 기능이 있나요?

      👉 그럴 때 필요한 것이 바로 내가 만든 플러그인입니다.

      “사이트 기능은 테마가 아니라 플러그인으로 분리하는 것이 원칙입니다.”

       

      🧠 왜 직접 플러그인을 만들어야 할까?


      ✅ 플러그인 만들기 기본 개요

      요소설명
      플러그인 디렉토리 /wp-content/plugins/my-plugin/
      메인 PHP 파일 my-plugin.php (필수)
      플러그인 정보 헤더 Plugin Name, Description 등 주석 필요
      기능 정의 add_action(), add_filter() 등으로 후크 등록
      활성화 방식 WP 관리자에서 수동 활성화

      📦 1단계: 플러그인 디렉토리 및 메인 파일 생성

      bash
      복사편집
      /wp-content/plugins/my-custom-plugin/ └── my-custom-plugin.php

      my-custom-plugin.php 기본 구조

      php
      복사편집
      <?php /** * Plugin Name: 나만의 플러그인 * Description: 워드프레스 플러그인 직접 만들기 예제입니다. * Version: 1.0 * Author: Your Name */ // 보안 체크 if (!defined('ABSPATH')) { exit; } // 기능 등록 예시 function myplugin_footer_message() { echo '<p style="text-align:center;">이 사이트는 나만의 플러그인을 사용 중입니다.</p>'; } add_action('wp_footer', 'myplugin_footer_message');

      📌 파일 이름 = 폴더 이름 = 슬러그로 사용하는 것이 일반적입니다.


      🧩 2단계: 플러그인 구조 설계 (기능 분리)

      bash
      복사편집
      my-custom-plugin/ ├── my-custom-plugin.php ├── includes/ │ ├── init.php │ ├── admin-settings.php │ └── shortcodes.php ├── assets/ │ ├── style.css │ └── script.js
      php
      복사편집
      // 메인 파일에서 기능 include require_once plugin_dir_path(__FILE__) . 'includes/init.php'; require_once plugin_dir_path(__FILE__) . 'includes/admin-settings.php'; require_once plugin_dir_path(__FILE__) . 'includes/shortcodes.php';

      유지보수와 재사용을 위해 기능별 파일 분리 필수입니다.


      🪝 3단계: 액션 & 필터 후크 활용

      add_action() 사용 예시

      php
      복사편집
      function myplugin_enqueue_assets() { wp_enqueue_style('myplugin-style', plugin_dir_url(__FILE__) . 'assets/style.css'); } add_action('wp_enqueue_scripts', 'myplugin_enqueue_assets');

      add_filter() 사용 예시

      php
      복사편집
      function myplugin_modify_title($title) { return $title . ' | 플러그인 테스트'; } add_filter('the_title', 'myplugin_modify_title');

      🧪 4단계: 관리자 설정 페이지 추가 (간단 예시)

      php
      복사편집
      // admin-settings.php add_action('admin_menu', function() { add_menu_page( '나만의 설정', '플러그인 설정', 'manage_options', 'myplugin-settings', 'myplugin_render_settings_page' ); }); function myplugin_render_settings_page() { echo '<div class="wrap"><h2>설정 페이지</h2><p>여기에 설정 UI를 만들 수 있습니다.</p></div>'; }

      📌 admin_menu 후크를 통해 관리자 메뉴에 항목 추가


      🔐 5단계: 플러그인 보안 기본

      보안 요소처리 방식
      파일 직접 접근 방지 if (!defined('ABSPATH')) exit;
      Nonce 처리 wp_create_nonce(), check_admin_referer()
      권한 제한 current_user_can('manage_options') 등으로 체크
      외부 요청 검증 sanitize_text_field(), esc_html(), wp_verify_nonce() 등 필수 사용

      🎯 실전 적용: 자주 쓰는 커스텀 코드 → 플러그인화

      예시 기능플러그인화 가능 여부
      로그인 후 리다이렉트 가능 (login_redirect 필터 사용)
      짧은코드로 CTA 버튼 출력 가능 (add_shortcode() 사용)
      GA 코드 삽입 가능 (wp_head 후크 사용)
      관리자 컬럼 정렬 변경 가능 (manage_posts_columns 등 후크 활용)

      ✅ 플러그인 개발 체크리스트

      항목완료 여부
      디렉토리 및 메인 파일 생성 ✅ / ❌
      플러그인 헤더 주석 입력 ✅ / ❌
      기능 파일 구조 설계 (includes 등) ✅ / ❌
      액션/필터 등록 및 실행 테스트 ✅ / ❌
      관리자 메뉴 추가 여부 확인 ✅ / ❌
      플러그인 활성화 후 UI 확인 ✅ / ❌