RSS

태그 보관물: 워드프레스 플러그인

인사말 플러그인 기능 개선(포스팅 이용)

플러그인 관리자 페이지 등록을 통해 인사말 목록을 관리할 수 있게 되었다. 처음 소스코드에 랜덤하게 인사말을 가져오는 방식에서 데이터베이스를 쿼리하는 방식으로 변경해 보자.

1. 테마 화면에 인사말과 사용자명 나타내기

function hello_all() {

       global $current_user;

       query_posts(‘orderby=rand&post_type=howdynotices’);

       if (have_posts()){

           the_post();

             $rtngreeting = get_the_title();

       }

       $chosen = $rtngreeting.’ ‘.$current_user->display_name;

       echo “<p id=’greeting’>$chosen</p>”;

}

add_action(‘wp_head’, ‘hello_all’);

query_posts의 인자로 “orderby=rand”과 “post_type=howdynotices'”를 전달한다. 포스트 타입이 howdynotices인 랜덤 포스트를 추출해 가져온다.

$chosen 변수에는 포스트에서 가져온 타이틀(인사말)과 현 사용자 이름($current_user->display_name)이 담겨 출력된다. 출력을 좀 더 보기 좋게 만들기 위해 css를 추가했다.

2. css 코드

function hn_greeting_css() {

       $x = is_rtl() ? ‘left’ : ‘right’;

       echo

       <style type=’text/css’>

       #greeting {

       float: $x;

       padding-$x: 155px;

       padding-top: 5px;

       margin: 0;

       font-size: 15px;

       color:red;

}

</style>

“;

}

add_action(‘wp_head’, ‘hn_greeting_css’ );

3. 결과 화면

p4오른쪽 위에 인사말(Happy New Year)과 사용자 이름(admin)이 보인다. 페이지가 갱신될 때마다 랜덤하게 인사말이 변경된다.

 
 

태그: ,

관리자 메뉴에 플러그인 추가하기

플러그인의 관리자 페이지가 반드시 필요한 건 아니다. 하지만, 메타 데이터가 있을 때는 만드는 게 좋다. 그렇지 아니면 데이터베이스를 직접 갱신해야 하는 경우도 생길 수 있다. 상당히 귀찮다.

관리자 페이지 등록을 위해서는 생성한 플러그인을 워드프레스에 등록하고 활성화하는 작업이 필요하다. 플러그인을 등록하면 아래와 같이 해당 목록이 나타난다. 이를 활성화하면 사이트에서 바로 사용할 수 있다. 여기서는 직접 만든 Howdy Notices 플러그인 “활성화” 메뉴를 이용한다.

[플러그인 관리 페이지] 

p1

HowdyNotices 메뉴가 왼쪽에 추가되었다. 이 플러그인 관련 포스트 및 메타 테이터 설정이 가능하다.

[관리자 페이지에 플러그인 추가]p2

소스코드를 보면 관리 페이지 등록을 위해서는 register_post_type()과 이를 호출할 액션훅이 필요하다는 걸 알 수 있다.

// 플러그인이 활성화 될 때 플러그인을 등록하는 함수를 호출한다.
add_action('init', 'Howdy_create_notices');

Howdy_create_notices()에서 관리자 화면에 보일 메뉴명을 배열로 등록하고 register_post_type()을 호출하면 모든 준비가 끝난다. 나머지 기반 구조(포스트 등록 화면, 변경, 삭제, 메타 데이터 관련 편집화면 …)는 워드프레스에서 기본으로 제공한다. 기존 템플릿 페이지를 호출하기 때문에 별도 등록용 페이지를 만들 필요가 없다.

function Howdy_create_notices() {
    $labels = array(
     'name' => _x( 'HowdyNotices', 'post type general name' ), // Tip: _x('') is used for localization
    'singular_name' => _x( 'HowdyNotice', 'post type singular name' ),
    'add_new' => _x( 'Add New', 'Notice' ),
    'add_new_item' => __( 'Add New Notice' ),
    'edit_item' => __( 'Edit Notice' ),
    'new_item' => __( 'New Notice' ),
    'view_item' => __( 'View Notice' ),
    'search_items' => __( 'Search Notices' ),
    'not_found' => __( 'No Notices found' ),
    'not_found_in_trash' => __( 'No Notices found in Trash' ),
    'parent_item_colon' => ''
    );
    $notice_args = array(
    'labels' => $labels,
    'singular_label' => __('Notice', 'simple-notices'),
    'public' => true,
    'show_ui' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'rewrite' => false,
    'supports' => array('title', 'editor'),
    );
    register_post_type('howdynotices', $notice_args);
}

 

 

[Howdy Notices 관리자 페이지]
p3

 
 

태그: , ,

처음으로 만든 워드프레스 플러그인

초보 프로그래밍의 첫 시작을 알리는 “Hello World!”처럼 아주 단순한 플러그인을 만들어 보았다. 물론, 레퍼런스는 있다.^^ 워드프레스에 기본으로 포함된 Hello Dolly을 참고했다.

주요기능은

  1. 인사말을 랜덤하게 추출
  2. 현재 사용자 추출
  3. 테마 페이지 갱신 시 “인사말” + “현 사용자 이름” 출력 (테마 우측 상단)

사용한 액션훅은 wp_head 이다. 훅 이름을 변경하면 다양한 위치나 상태에서 액션을 취할 수 있다. 만약 wp_footer면 페이지 하단에 뿌려진다.

add_action( 'wp_head', 'hello_there' );

액션훅이 발생하면 hello_there 함수가 호출된다.

function hello_there() {
    global $current_user; 
    $chosen = getGreeting().$current_user->display_name; 
    echo "<p id='greeting'>$chosen</p>";
}

hello_there() 함수는 getGreeting()을 호출하여 인사말 목록을 랜덤으로 선택해 반환하고, 사용자 이름을 붙여서 화면에 출력한다.

function getGreeting() {
    $greetings = "Hello~
    Hi!
    Nice to meet you!
    Thank you!
    Thanks!
    Good Morning!
    Good Afternoon!
    Good Evening!
    Good Night~~";

    $greetings = explode( "\n", $greetings );
    return wptexturize( $greetings[ mt_rand( 0, count( $greetings ) - 1 ) ] );
}

글자를 꾸미기 위해 css 함수와 액션훅을 추가했다.

add_action( 'wp_head', 'greeting_css' );
function greeting_css() {
     // This makes sure that the positioning is also good for right-to-left languages
     $x = is_rtl() ? 'left' : 'right';
    echo "
     <style type='text/css'>
       #greeting {
       float: $x;
       padding-$x: 155px;
       padding-top: 5px;
       margin: 0;
       font-size: 15px;
       color:red;
      }
    </style>
    ";
}

[플러그인 실행 화면] : 우측 상단에 인사말과 사용자 이름 출력

wpplugin2

 
 

태그: ,

워드프레스 플러그인 활성화/비활성화 하려면

플러그인을 생성할 때 register_activation_hook를 사용한다. 이 함수는 워드프레스 플러그인 메뉴에서 플러그인을 활성화할 때 실행된다. 두 개의 파라메터를 받는데 첫 번째는 메인 플러그인 파일 경로이고, 두 번째는 플러그인 활성활 할 때 실행되는 함수명이다.

register_activation_hook( __FILE__, 'myplugin_activate' );
function myplugin_activate() { 
 global $wp_version;
 If(version_compare ($wp_version, "2.9","<")) {
    deactivate_plugins(basename(__FILE__));
    wp_die("이 플러그인을 실행하려면 워드프레스 2.9이상 버전을 설치하세요.");
 }
}

register_activation_hook은 myplugin_activate 함수를 호출하면 버전이 낮을 경우 deactivate_plugins 함수를 호출하여 플러그인을 비활성화 시킨다.

플러그인이 비활성화되면 register_deactivation_hook가 자동 실행된다. 이 때 플러그인 비활성화 관련 처리를 해주면 된다.

    register_deactivation_hook(__FILE__, 'myplugin_deactivate')

    function myplugin_deactivate() {

       // 작업 코드

    }

deactivate_plugins

 
 

태그: