Como criar um plugin para WordPress

Download Como criar um plugin para WordPress

Post on 26-Jun-2015

11.728 views

Category:

Technology

4 download

DESCRIPTION

Palestra no iMasters CMS Brasil 2009 em 20 de Junho de 2009 no Novotel Jaragu So Paulo Conventions.

TRANSCRIPT

  • 1. Como criar um plugin para WordPress Por @leandrovieira

2. O que um plugin WordPress?Um plugin WordPress um programa, um conjunto de uma ou vrias funes, escrito em PHP e adiciona recursos ou servios especficos ao WordPress atravs de sua API. 3. Devo realmente criar um plugin WordPress? Consulte o diretrio de plugins WordPress em http: //wordpress.org/extend/plugins/ H mais de 5 mil publicados; 28 de Janeiro declarado como o Thank a Plugin Developer quando o diretrio atingiu a marca de 4 mil plugins plublicados;Alguma funo nativa do WordPress? Consulte http: //codex.wordpress.org/Function_Reference Posso adaptar um plugin para minha necessidade sabendo como cri-los. 4. O que voc precisa para criar um plugin WordPress? Um problema pra resolver; Ambiente de desenvolvimento em PHP (XAMPP); Conhecimentos em PHP; Conhecimentos na API de Plugin do WordPress; Arquivos de exemplo: http://leandrovieira.com/download/9 5. Estrutura de um plugin WordPress No mnimo um arquivo PHP;Se tiver vrios arquivos armazenar num diretrio;Nome do plugin: nico e descritivo. Exemplo: CMS Brasil2009;Nome do arquivo PHP: cms-brasil-2009.php;cmsbrasil2009.phpNome do diretrio: cms-brasil-2009/cms-brasil-2009.php;cmsbrasil2009/cmsbrasil2009.phpArmazenado em /wp-content/plugins/ Se for hospedar o plugin no diretrio do WorPress.org necessrio criar o arquivo readme.txt; Licena de uso do plugin GPL ou alguma compatvel; Cabealho do plugin. 6. Cabealho de um plugin WordPress 7. Como instalar um plugin WordPress Via FTP;Upload do plugin em formato ZIP (a partir da verso 2.7);Baixar do diretrio de plugins do WordPress.org;Ativar o plugin desejado. 8. API de Plugin do WordPress Hooks (ganchos);Acrescentar funcionalidades sem editar o CORE doWordPress;H dois tipos de hooks (ganchos): Actions (aes); So ganchos executados pelo WordPress em momentos especficos durante a execuo ou quando algum evento ocorre. Filters (filtros) So ganchos executados pelo WordPress para modificar textos ou outros tipos antes de inserir no banco de dados ou exibir no navegador de internet. 9. ActionsComo registrar uma funo para responder um evento do WordPressNo arquivo do plugin crie uma funo PHP; Algumas aes recebem mais de um parmetro. possvel definir quantos receber; Registre-a com o WordPress chamando a funo add_action; add_action ( 'hook_name', 'your_function_name', [priority], [accepted_args] ); add_action ( 'publish_post', 'nome_funcao' ); 10. ActionsExemplo:function cmsbrasil2009_url_after_login() { global $redirect_to; if ( !isset( $_GET['redirect_to'] ) ) $redirect_to = get_bloginfo( 'home' ); } add_action( 'login_form', 'cmsbrasil2009_url_after_login' ); 11. FiltersComo registrar uma funo de filtro para tratar dados no WordPressNo arquivo do plugin crie uma funo PHP para fazer o processo de filtragem; Alguns filtros recebem mais de um parmetro. possvel definir quantos receber; Registre-a com o WordPress chamando a funo add_filter. add_filter ( 'hook_name', 'your_filter', [priority], [accepted_args] ); add_filter ( 'the_title', 'nome_funcao' ); 12. Filters function cmsbrasil2009_cms_title( $title ) { $cms = preg_match( "/(wordpress|joomla|drupal)/i", $title, $matches ); $cms_name = strtolower( $matches[0] ); switch( $cms_name ) : case 'wordpress' : return '' . $title; break; case 'joomla' : return '' . $title; break; case 'drupal' : return '' . $title; break; default : return '' . $title; break; endswitch; } add_filter( 'the_title', 'cmsbrasil2009_cms_title' ); 13. Filters function primeira( $title ) { return 'T1: ' . $title; } add_filter( 'the_title', 'primeira' );function segunda( $title ) { return 'T2: ' . $title; } add_filter( 'the_title', 'segunda' );Resultado: T2: T1: Ttulo do postfunction primeira( $title ) { return 'T1: ' . $title; } add_filter( 'the_title', 'primeira', 11 );function segunda( $title ) { return 'T2: ' . $title; } add_filter( 'the_title', 'segunda', 10 ); Resultado: T1: T2: Ttulo do post 14. Removendo Actions e FiltersDa mesma forma que podemos incluir aes para responder eventos do WordPress e filtros para tratar dados, podemos tambm desabilitar um desses recursos nativos do WordPress ou de algum outro plugin. remove_action( 'nome_do_gancho', 'nome_da_funcao' ); remove_filter( 'nome_do_gancho', 'nome_da_funcao' ); Atente-se ao fato que para remover um gancho criado usando prioridade diferente de 10, se faz necessrio informa-la ao chamar a funo remove_action. remove_filter( 'nome_do_gancho', 'nome_da_funcao', 11 ); 15. Funes "Pluggable" Alm dos ganchos (actions e filters) existem outras maneiras de modificar o comportamento do WordPress: sobreescrevendo suas funes.As funes que o WordPress permite serem sobreescritas so chamadas de Pluggable Functions e so definidas no seguinte arquivo: wp-includes/pluggable.php. Essas funes so carregadas somente aps o carregamento de todos plugins e somente se elas no tiverem sido reescritas.if ( !function_exists('is_user_logged_in') ) : function is_user_logged_in() { ... } endif; 16. Templates tags (tags de templates)Definir uma tag de template simples. Escreva uma funo PHP em seu plugin e explique aos usurios como e onde chama-las. boa prtica sempre verificar se a funo ou classe existe antes de chama-la. 17. Criando menus e pginas administrativas Para criar pginas administrativas precisamos de trs coisas:Criar uma funo contendo os cdigos utilizados para criar os menus; add_menu_page; add_submenu_page; add_options_page; ... Registrar tal funo usando o gancho "admin_menu";Criar o HTML da pgina a ser exibida quando o menu for clicado.* Os menus so criados "on the fly". Eles sero recriados a cada acesso a uma das pginas administrativa. 18. Criando menus e pginas administrativas function cmsbrasil2009_menu() { add_menu_page( 'Inscrio: iMasters CMS Brasil 2009', 'Inscrio', 10, 'cmsbrasil2009/inscricao.php' );add_submenu_page( 'cmsbrasil2009/inscricao.php', 'Inscries pendentes', 'Pendentes', 10, 'cmsbrasil2009/pendentes.php' );} add_action( 'admin_menu', 'cmsbrasil2009_menu' ); 19. Armazenamento de dados Para pequena quantidade de dados ou dados estticos, useo mecanismo de opes do WordPress;Para informaes referente a posts, use Post meta;Para informaes referente a usurios, use User meta;Para grande quantidade de dados, crie suas tabelas debanco de dados. 20. OptionsO WordPress tem um mecanismo para salvar, atualizar, excluir e resgatar dados nomeado como opes. Os valores dessas opes podem ser strings, arrays ou objetos PHP. Esses dados sero serializados ou convertidos para string antes de serem armazenados e deserializados quando resgatados.As opes devem ter nomes nicos para evitar conflitos com o WordPress e outros plugins. 21. Options Funes para trabalhar com as opes do WordPress add_option; add_option($name, $value, $deprecated, $autoload);get_option; get_option($option);update_option; update_option($option_name, $newvalue);delete_option;delete_option($name); 1. A funo update_option verifica se a opo existe antes deatuliza-la, se no existir ela ser criada; 2. deprecated no usado; 3. autoload para a opo ser carregada pela funoget_alloptions. 22. Options Pgina de opes no padro WordPress

Exemplo de opes Nome da opo