웹사이트 검색

플러그형 WordPress 기능


WordPress Pluggable Functions에 대해 들어본 적이 있나요? 그렇지 않다면 이 기사가 여러분의 관심을 끌 것입니다. 간단히 말해서 플러그형 기능은 재정의할 수 있는 WordPress 핵심 기능입니다. 이러한 모든 기능은 "wp-includes/pluggable.php"라는 단일 파일에 있습니다. 플러그인 가능한 기능은 WordPress 1.5.1에서 도입되었지만 최신 버전의 WordPress에서는 이 방법이 더 이상 사용되지 않습니다. 이제 최근 함수는 출력에 필터를 사용합니다. 하지만 여전히 플러그형 기능을 재정의할 수 있으며 이것이 제가 이 게시물에서 다루고 싶은 것입니다.

어떤 기능?

플러그 가능한 기능은 다음과 같습니다.

  • 인증_리디렉션
  • check_admin_referer
  • check_ajax_referer
  • get_avatar
  • get_currentuserinfo
  • get_user_by_email
  • get_user_by
  • get_userdatabylogin
  • get_userdata
  • is_user_logged_in
  • wp_인증
  • wp_check_password
  • wp_clear_auth_cookie
  • wp_create_nonce
  • wp_generate_auth_cookie
  • wp_generate_password
  • wp_get_current_user
  • wp_hash_password
  • wp_hash
  • wp_로그아웃
  • wp_mail
  • wp_new_user_notification
  • wp_nonce_tick
  • wp_notify_moderator
  • wp_notify_postauthor
  • wp_parse_auth_cookie
  • wp_password_change_notification
  • wp_rand
  • wp_redirect
  • wp_safe_redirect
  • wp_salt
  • wp_sanitize_redirect
  • wp_set_auth_cookie
  • wp_set_current_user
  • wp_set_password
  • wp_text_diff
  • wp_validate_auth_cookie
  • wp_validate_redirect
  • wp_verify_nonce

각 기능의 이름을 클릭하면 해당 코덱스 페이지에 액세스할 수 있습니다.

플러그형 함수를 재정의하는 방법

이것은 매우 간단합니다. 여러분이 해야 할 일은 플러그인 내에 "if ( !function_exists() )…" 문이 포함된 파일을 생성한 다음 함수를 다시 정의하는 것입니다. 시작할 때 원래 기능을 복사하여 붙여넣는 것이 좋습니다. 이렇게 하면 기능이 작동하는지 확인할 수 있습니다. 다음은 빈 예입니다.

if ( ! function_exists('wp_notify_postauthor') ) :
/**
 * Notify an author of a comment/trackback/pingback to one of their posts.
 *
 * @since 1.0.0
 *
 * @param int $comment_id Comment ID
 * @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback'
 * @return bool False if user email does not exist. True on completion.
 */
function wp_notify_postauthor( $comment_id, $comment_type = '' ) {

/* This is where you redefine the function */

}
endif;

“wp_notify_postauthor()” 함수에 대해 이야기하고 싶습니다. 새 댓글이 추가되면 게시물 작성자에게 이메일을 보내는 역할을 담당합니다. 내 플러그인 중 하나인 WordPress Issues Manager에서 이 알림을 비활성화해야 했지만 특정 사용자 정의 게시물 유형만 비활성화해야 했습니다. 그래서 전체 함수를 복사하고 간단히 다음을 추가했습니다.

if ( ! function_exists('wp_notify_postauthor') ) :
/**
 * Notify an author of a comment/trackback/pingback to one of their posts.
 *
 * @since 1.0.0
 *
 * @param int $comment_id Comment ID
 * @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback'
 * @return bool False if user email does not exist. True on completion.
 */
function wp_notify_postauthor( $comment_id, $comment_type = '' ) {

if( $post->post_type != 'issue'):

/* content of the original function */

endif;

}
endif;

간단하지만 크게 변경하거나 사용자 지정 작업에 연결된 전체 사용자 지정 기능을 만들지 않고도 훌륭하게 작동합니다.

wp_mail()

플러그 가능한 함수 목록에서 본 것처럼 wp_mail()은 플러그 가능한 함수입니다. 이 기능은 이메일을 보내는 데 사용되는 기능입니다. 이메일이 전송되면 WordPress의 어느 곳에서나 이 기능을 사용합니다. 그렇기 때문에 사용자 정의가 매우 흥미로울 수 있습니다. 예를 들어 WordPress 설치에서 보낸 모든 이메일에 대해 html 기본 템플릿을 사용할 수 있습니다.

일종의 백업을 위해 모든 메시지의 숨겨진 복사본을 특정 이메일로 보낼 수도 있습니다(누군가가 메시지를 받지 못했다고 말할 때 유용할 수 있습니다!).

wp_인증()

wp_authenticate()를 수정하고 몇 가지 추가 매개변수를 추가하여 사이트 보안을 강화할 수도 있습니다(예: 무차별 대입 공격).

인증_리디렉션()

사용자가 로그인되어 있는지 확인하고, 로그인되어 있지 않으면 로그인 페이지로 리디렉션하는 기능입니다. 기능을 재정의하고 기본 로그인 페이지 대신 사용자 정의 페이지로 사용자를 리디렉션하는 것은 매우 쉽습니다(예: wp-admin 폴더를 숨기려는 경우).

wp_generate_password()

이 기능은 비밀번호를 자동 생성하는 기능입니다. 솔직히 수정할 필요는 없지만 이제 무차별 대입 공격이 무엇인지 알았으므로 더 강력한 비밀번호를 만드는 데 관심이 있을 수 있습니다. 음, 이것은 개선할 기능입니다.

결론

WordPress 플러그 가능 기능에 대한 이 짧은 게시물을 마무리하기 위해 새로운 기능이 더 이상 그렇게 작동하지 않는다는 사실을 지적하고 싶습니다. 위에서 쓴 것처럼 그들은 이제 필터를 사용하고 있습니다. 그러나 플러그형 기능은 특히 특정 플러그인을 생성할 때 중요한 기능입니다. 하지만 플러그형 기능을 사용할 때는 주의하세요. 새로 생성된 기능이 완벽하게 작동하지 않으면 웹사이트의 일부(기능적 측면에서)가 손상될 수 있으므로 모든 조건에서 테스트해 보시기 바랍니다.