# 자바스크립트 (기초) # 액션과 훅 #### 1. 훅(Hooks) 훅은 특정 시점에 코드를 실행할 수 있는 워드프레스의 강력한 기능입니다. 훅은 크게 액션과 필터로 나뉩니다. - **액션(Action)**: 특정 이벤트가 발생할 때 실행되는 함수를 정의합니다. 예를 들어, 게시물이 저장될 때 추가 작업을 수행할 수 있습니다. - **필터(Filter)**: 데이터를 데이터베이스에 저장하거나 브라우저에 출력하기 전에 수정할 수 있습니다. #### 2. 액션(Action) 액션은 특정 이벤트가 발생할 때 실행할 함수를 정의합니다. 예를 들어, 플러그인이 활성화될 때, 테마가 로드될 때, 게시물이 저장될 때 등의 이벤트가 있을 수 있습니다. ##### 액션 훅 사용 방법 1. **액션 훅 추가** - `add_action()` 함수를 사용하여 특정 이벤트에 함수를 추가합니다. ```php function my_custom_function() { // 실행할 코드 echo "This is my custom function!"; } add_action('wp_footer', 'my_custom_function'); ``` 2. **액션 훅 제거** - `remove_action()` 함수를 사용하여 특정 이벤트에서 함수를 제거할 수 있습니다. ```php remove_action('wp_footer', 'my_custom_function'); ``` ##### 주요 액션 훅 - **`init`**: 워드프레스가 초기화될 때 실행됩니다. ```php add_action('init', 'my_init_function'); function my_init_function() { // 초기화 작업 } ``` - **`wp_enqueue_scripts`**: 스크립트와 스타일을 큐에 추가할 때 사용됩니다. ```php add_action('wp_enqueue_scripts', 'my_enqueue_scripts'); function my_enqueue_scripts() { wp_enqueue_style('my-style', get_stylesheet_uri()); wp_enqueue_script('my-script', get_template_directory_uri() . '/js/my-script.js', array(), false, true); } ``` - **`save_post`**: 게시물이 저장될 때 실행됩니다. ```php add_action('save_post', 'my_save_post_function'); function my_save_post_function($post_id) { // 게시물 저장 작업 } ``` #### 3. 필터(Filter) 필터는 데이터가 데이터베이스에 저장되기 전이나 브라우저에 출력되기 전에 데이터를 수정할 수 있게 합니다. ##### 필터 훅 사용 방법 1. **필터 훅 추가** - `add_filter()` 함수를 사용하여 특정 데이터에 함수를 추가합니다. ```php function my_custom_title($title) { return 'Prefix - ' . $title; } add_filter('the_title', 'my_custom_title'); ``` 2. **필터 훅 제거** - `remove_filter()` 함수를 사용하여 특정 데이터에서 함수를 제거할 수 있습니다. ```php remove_filter('the_title', 'my_custom_title'); ``` ##### 주요 필터 훅 - **`the_content`**: 게시물의 콘텐츠를 출력하기 전에 데이터를 수정합니다. ```php add_filter('the_content', 'my_custom_content'); function my_custom_content($content) { return $content . '
Custom content added at the end.
'; } ``` - **`the_title`**: 게시물의 제목을 출력하기 전에 데이터를 수정합니다. ```php add_filter('the_title', 'my_custom_title'); function my_custom_title($title) { return 'Prefix - ' . $title; } ``` - **`wp_nav_menu_items`**: 네비게이션 메뉴 항목을 출력하기 전에 데이터를 수정합니다. ```php add_filter('wp_nav_menu_items', 'my_custom_menu_items', 10, 2); function my_custom_menu_items($items, $args) { return $items . '