Você já ouviu falar do WordPress Pluggable Functions ? Se não, então este artigo deve chamar sua atenção. Em duas palavras, as funções conectáveis
Quais Funções?
As funções conectáveis
- auth_redirect
- 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_authenticate
- 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_logout
- 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
Você pode clicar no nome de cada função para acessar sua página de códice.
Como substituir funções conectáveis
Bem, isso é bem simples, tudo que você precisa fazer é criar um arquivo dentro de seus plugins contendo uma declaração “if ( !function_exists() )…” e então redefinir a função. Eu recomendo fortemente que você copie e cole a função original ao iniciar. Dessa forma, você tem certeza de que a função funcionará. Aqui está um exemplo vazio:
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;
Eu gostaria de falar sobre a função “wp_notify_postauthor()”. Este é o responsável por enviar um e-mail aos autores do post quando um novo comentário é adicionado. Em um dos meus plugins, o WordPress Issues Manager, precisei desabilitar essa notificação, mas apenas um tipo de postagem personalizado específico. Então, copiei toda a função e simplesmente adicionei isso:
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;
Isso é simples, mas funciona muito bem sem ter que fazer grandes alterações ou criar uma função personalizada completa vinculada a uma ação personalizada.
wp_mail()
Como você viu na lista de funções conectáveis, wp_mail() é uma função conectável. Esta função é a utilizada para enviar e-mails. Em qualquer lugar no WordPress, quando um email é enviado, ele usa essa função. É por isso que personalizá-lo pode ser muito interessante. Por exemplo, você pode usar um modelo padrão html para todos os e-mails enviados de sua instalação do WordPress.
Você também pode enviar uma cópia oculta de cada mensagem para um e-mail específico para ter um tipo de backup (confie em mim, isso pode ser útil quando alguém lhe disser que não recebeu a mensagem!).
wp_authenticate()
Você também pode modificar wp_authenticate() e adicionar alguns parâmetros extras para reforçar a segurança em seu site (ataques de força bruta, por exemplo).
auth_redirect()
Esta função é a que verifica se um usuário está logado e, caso não esteja, redireciona-o para a página de login. Seria muito fácil substituir a função e redirecionar o usuário para uma página personalizada, em vez da página de login padrão (por exemplo, se você deseja ocultar a pasta wp-admin).
wp_generate_password()
Esta função é a que gera automaticamente as senhas. Honestamente, você não precisa modificá-lo, mas agora que sabe o que são ataques de força bruta, pode estar interessado em criar senhas mais fortes. Bem, esta é a função para melhorar.
Conclusão
Para concluir este breve post sobre as funções plugáveis