ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 워드프레스 기초 (hook)
    WordPress 2023. 9. 22. 13:55

    워드프레스는 블로그 포스팅 처럼 홈페이지를 만들 수 있는 장치이다.

     

    워드프레스의 특징은 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 라는 매개변수를 추가해서 실행하고 마지막 결과값을 저장한다.

Designed by Tistory.