친절한 우리 고모

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

  • 2025. 4. 24.

    by. 친절한 고모

    목차

      🧠 functions.php란 무엇인가?

      functions.php는 워드프레스 테마 디렉터리에 포함된 PHP 파일로,
      해당 테마가 작동하는 동안 실행되는 사용자 정의 함수, 후크(Hook), 커스텀 기능 등을 등록하는 핵심 파일입니다.

      php
      복사편집
      // 위치 예시 /wp-content/themes/your-theme/functions.php

      핵심은: 테마 수준에서 사이트의 기능을 확장하고 제어하는 관문이라는 점입니다.

       

      🧠 functions.php란 무엇인가?


      ⚙️ functions.php에서 가능한 일들

      구분예시 기능
      테마 지원 기능 추가 썸네일, 내비게이션 메뉴, 커스텀 로고 등 활성화
      커스텀 후크 add_action, add_filter로 기능 추가/변경
      자바스크립트·CSS 로드 wp_enqueue_script, wp_enqueue_style
      사용자 정의 역할·메뉴·위젯 등록 register_nav_menus, register_sidebar 등
      기타 관리자 영역 제어, 로그인 화면 커스터마이징 등

      🧩 기본 구조 예시

      php
      복사편집
      <?php // 테마 지원 기능 등록 add_theme_support('post-thumbnails'); add_theme_support('title-tag'); // 커스텀 메뉴 등록 register_nav_menus(array( 'main-menu' => __('Main Menu', 'your-theme'), )); // CSS, JS 등록 function my_theme_enqueue_assets() { wp_enqueue_style('main-style', get_stylesheet_uri()); wp_enqueue_script('main-js', get_template_directory_uri() . '/assets/main.js', array(), null, true); } add_action('wp_enqueue_scripts', 'my_theme_enqueue_assets'); ?>

      🪝 Hook 시스템 제대로 쓰기 – add_action vs add_filter

      워드프레스의 핵심은 Hook 기반 이벤트 시스템입니다.

      ▶️ add_action

      • 새로운 동작을 삽입
      • 예: HTML 출력, 자바스크립트 삽입, 기능 호출 등
      php
      복사편집
      function my_footer_code() { echo '<p>© 2025 MySite</p>'; } add_action('wp_footer', 'my_footer_code');

      🧪 add_filter

      • 기존 값 또는 동작을 수정
      • 예: 제목, 콘텐츠, 업로드 제한값, excerpt 등
      php
      복사편집
      function my_custom_title($title) { return $title . ' | 워드프레스 전문가 블로그'; } add_filter('the_title', 'my_custom_title');

      🧱 실무 예시: 테마 커스터마이징

      ✅ 썸네일 크기 설정

      php
      복사편집
      add_theme_support('post-thumbnails'); add_image_size('custom-thumb', 600, 400, true);

      ✅ excerpt 길이 조정

      php
      복사편집
      function custom_excerpt_length($length) { return 30; } add_filter('excerpt_length', 'custom_excerpt_length');

      ✅ 관리자 바 숨기기

      php
      복사편집
      add_filter('show_admin_bar', '__return_false');

      ⚠️ 주의사항

      항목설명
      테마 교체 시 초기화 functions.php는 테마 종속 → 커스텀 기능이 사라질 수 있음
      기능성은 플러그인화 고려  
      코드 오류는 사이트 전체 오류로 연결 문법 오류는 ‘화이트스크린(WSOD)’ 발생 위험
      → 반드시 FTP 또는 관리 패널 접근 가능 상태에서 작업  
      사이트 전체 영향 잘못된 후크, 루프, 쿼리 변경은 성능 저하/버그 원인

      💡 실전 팁

      1. 항상 child theme 사용 – 부모 테마 업데이트 시 커스터마이징 유지
      2. 자주 쓰는 코드는 사이트 전용 유틸 플러그인으로 분리 가능
      3. 변경 전 FTP 백업 또는 코드 복사 필수
      4. 코드 정리는 inc/ 폴더 만들어 분할 관리 추천
        (ex: inc/scripts.php, inc/hooks.php 등 불러오기)

      ✅ functions.php 마스터 체크리스트

      항목완료 여부
      기본 테마 기능 활성화 (썸네일, 타이틀, 메뉴) ✅ / ❌
      CSS/JS 파일 올바르게 로드 ✅ / ❌
      적절한 후크(add_action/add_filter) 사용 ✅ / ❌
      기능별 코드 분할 관리 구조 설계 ✅ / ❌
      커스터마이징 적용 후 기능 테스트 완료 ✅ / ❌