Caso você for desenvolver um plugin para WordPress, dependendo dos requisitos desse plugin, você provavelmente irá precisar criar algumas páginas automáticamente assim que o usuário instalá-lo ou em algum outro momento do programa.
Nesse post mostro como criar páginas no WordPress de forma programática, (ou “na unha”, como costumam dizer por aí :-P), e também como limpar os dados inseridos pelo plugin, para que quando o usuário remover o plugin, ele não deixe “sujeira” no banco de dados.
Criando página
Para criar uma página, basta usarmos a função wp_insert_post
. Algo mais ou menos assim:
function magic_page_install() {
$page = array(
'post_title' => 'Magic Page',
'post_content' => 'This page was created by Magic Page plugin!',
'post_type' => 'page',
'post_status' => 'publish'
);
$pageID = wp_insert_post($page);
update_option('mpID', $pageID);
}
register_activation_hook(__FILE__, 'magic_page_install');
Note que pegamos o ID da página que foi criada e armazenamos em nosso banco de dados através da função update_option
. Vamos precisar desse ID mais tarde.
Enviando para a lixeira
Se o usuário desativar o plugin, vamos enviar a página que criamos anteriormente para a lixeira, mas sem excluí-la por completo, para que caso o usuário reative o plugin, possámos restaurá-la.
Para isso utilizamos a função wp_delete_post
. O código fica mais ou menos assim:
function magic_page_deactivate() {
$pageID = get_option('mpID');
wp_delete_post($pageID);
}
register_deactivation_hook(__FILE__, 'magic_page_deactivate');
Moleza né? Pegamos o ID da página que salvamos no passo anterior para podermos atualizá-la com a função wp_delete_post
.
Excluindo completamente
Bom, se o usuário for remover o plugin, então devemos excluir todos os dados previamente inseridos por ele, para que não fique “sujeira” indesejada no banco de dados que está sendo utilizado pelo WordPress.
Fazer isso, também é bem simples, veja:
function magic_page_uninstall() {
$pageID = get_option('mpID');
delete_option('mpID');
wp_delete_post($pageID, true);
}
register_uninstall_hook(__FILE__, 'magic_page_uninstall');
Deletamos o ID dá página que tinhámos armazenado, e novamente utilizamos a função wp_delete_post
, mas dessa vez passamos um segundo argumento para ela, com o valor true
. Dessa forma a página não será movida para a lixeira, e sim excluida completamente.
Demonstração
Criei um plugin para poder testar o código mostrado neste artigo. Se quiser vê-lo funcionando, e dar uma olhada no código completo, você pode baixá-lo aqui. Qualquer dúvida, ou sugestão fique a vontade para deixar um comentário ou enviar um pull request.