워드프레스 기초 (hook)
워드프레스는 블로그 포스팅 처럼 홈페이지를 만들 수 있는 장치이다.
워드프레스의 특징은 DB와 연동해서 홈페이지의 구성 요소들을 DB로 부터 불러올 수 있기 때문에, 비슷한 모양의 홈페이지를 대량으로 찍어낼 때 유용하게 사용된다.
페이지의 프레임 뿐만 아니라 각 요소들의 CSS 나 세팅 까지도 DB에 연동시킬 수 있다.
1. 워드프레스 시작
워드프레스 페이지를 불러오면, 워드프레스의 버전이나 서버 세팅부터 로그인 여부 까지 기본적으로 필요한 세팅을 마치고 DB와 연동한다. DB와 연동한 이후에는 홈페이지를 나타내기 위한 요소들을 불러오는데,
Java Script나 boot strap , 플러그인 , hooks 등이 있다.
2. 플러그인
플러그인은 워드프레스에 유저가 커스터마이징 한 기능을 넣어서 사용할 수 있게 만든 기능이다.
이 플러그인은 wp-includes / plugin 에 저장되며, 페이지의 html, css를 작성하는 기능부터 게시판 만들기 기능, 슬라이드 기능 등 홈페이지에서 구현할 수 있는 모든 기능들을 library화 해서 사용할 수 있게 했다고 생각하면 된다.
3. hooks
워드프레스에서는 워드프레스에서 지정해놓은 명령어들이 있다
그 중 hook 이라고 불리는 녀석들이 큰 역할을 한다.
hook은 프로젝트 내 어디서나 사용될 수 있다.
add_action()
function my_custom_function() {
// 원하는 작업 수행
}
add_action('wp_loaded', 'my_custom_function');
add_action 이후 첫 번째 매개변수에는 hook 나 식별자 , 두 번째 매개변수에는 실행시킬 함수나 식별자를 선언한다
여기서 나온 hook은 액션 후크라고 한다.
결국 add_action은 특정 이벤트가 발생할 때 함수를 실행시키는 요소다.
add_filter() , apply_filters()
필터 후크에 함수를 추가
add_filter('filter_name', 'your_filter_function');
필터 후크에 걸린 함수를 실행 (결과를 반환한다)
$filtered_data = apply_filters('filter_name', $data_to_be_filtered);
필터 후크 예시
function custom_title_filter($title) {
// 포스트 제목에 접두사를 추가
return 'Prefix: ' . $title;
}
add_filter('the_title', 'custom_title_filter');
<p> apply_filters('the_title', $customedTitle); </p>
add_setting() , add_control
워드프레스의 테마 커스터마이즈에 사용되는 함수로서 워드 프레서에서 웹 사이트의 디자인과 설정을 실시간으로 변경하고 미리보기 할 수 있는 도구를 제공한다.
주로 functions.php 에서 호출된다.
add_setting( $id, $args );
-> $id 에 $args 설정을 정의한 배열을 저장한다.
function mytheme_customize_register( $wp_customize ) {
// Setting for Site Title
$wp_customize->add_setting( 'site_title', array(
'default' => 'My Website',
'sanitize_callback' => 'sanitize_text_field',
) );
// Control for Site Title
$wp_customize->add_control( 'site_title', array(
'label' => 'Site Title',
'section' => 'title_tagline',
'type' => 'text',
) );
}
add_action( 'customize_register', 'mytheme_customize_register' );
-> site_title 이라는 설정(옵션)을 추가하고 기본 값을 정의한 뒤, sanitize_text_field 함수를 통해 입력된 데이터를 정리한다.
그 다음 control에서 site_title 설정을 커스터마이즈 한다.
위의 함수는 사용자로부터 정보를 입력받고, 그 정보를 바탕으로 페이지를 커스터마이징 하는 함수라고 볼 수 있다.
add_action을 사용해서 불러올 수 있다
filter의 특이점
-> filter는 특수한 성질을 가진다. 바로 하나의 후크에 여러개의 필터를 추가할 수 있다.
후크에 걸린 각각의 필터는 후크를 불렀을 때, 후크에 걸렸던 순서대로 실행된다.
또한 필터 후크는 다른 후크에 걸 수 도 있다.
function example_callback( $string, $arg1, $arg2 ) {
//(maybe) modify $string.
return $string;
}
add_filter( 'example_filter', 'example_callback', 10, 3 );
$value = apply_filters( 'example_filter', 'filter me', $arg1, $arg2 );
example_callback() 이라는 함수는 인자 3개를 받고 $string을 반환하는 콜백 함수이다.
add_filter()로 'example_filter' 라는 후크에 이 콜백함수를 걸고, 10 , 3을 선언했는데, 10은 example_filter 가 실행됬을 때, example_callback() 이 실행될 순서를 나타내고, 3은 example_callback()이 실행될 때 사용할 매개변수의 수 이다.
결국 $value 변수에 apply_filters 를 선언한 것은 example_filter 에 걸린 모든 콜백 함수를 filter me 라는 초기값과 $arg1, $arg2 라는 매개변수를 추가해서 실행하고 마지막 결과값을 저장한다.