Continuando o artigo do colega Diogo Espinha sobre Personalizando o Painel de Administração do WordPress para os seus Clientes, nesta segunda parte iremos mostrar como poderá remover menus desnecessários na administração do WordPress. Por vezes não queremos que nossos clientes tenham acesso a todas as partes que criam as funcionalidades do website em WordPress, tais como, desinstalar plugins, mudar o tema ou modificar definições das opções globais. No início, quando comecei a criar sites em WordPress eu dava a liberdade aos meus clientes de poderem modificar tudo o que quisessem, dando acesso ao painel de administração com privilégios de administrador. No entanto, em alguns casos, os meus clientes eram mais “curiosos” que “conhecedores” da ferramenta e isso permitiu a desconfiguração de alguns sites.
Neste momento, continuando a dar acesso como administrador, retiro alguns paineis que acho desnecessários para o normal funcionamento do site, como por exemplo, a secção de mudança de tema. O cliente não necessita de ficar a saber o que é um tema e que o pode mudar se aquilo que ele pretende é um site com o seu próprio layout. O cliente também não precisa ficar sabendo que existem plugins, ou pelo menos, não deve ter acesso à desinstalação dos plugins críticos para o bom funcionamento do seu site. São estas pequenas mudanças que efetuo atualmente.
COMO ALTERAR OS MENUS DO WORDPRESS
Para simplificar o processo de criação de conteúdo por parte do cliente, tornar o WordPress um ambiente mais apelativo é essencial! Para quem não precisa de funcionalidades como os links, funcionalidades de blogs e comentários, torna-se mais simples se você retirar isso da visão do cliente.
Felizmente, existe uma action hook que nos pode ajudar nesse assunto: add_action( ‘admin_menu’ ); Vamos criar um plugin específico para tratar disto:
<?php /* Plugin Name: Simplificar Painel Author: Escola WordPress Description: Remove alguns menus que não são necessários em alguns sites. Version: 1.0 */ add_action( 'admin_menu', 'custom_remove_menus' ); function custom_remove_menus() { // Removendo a página das Categorias remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=category' ); // Removendo a edição de posts - funcionalidade de blog remove_menu_page( 'edit.php' ); // Removendo o menu de acesso aos comentários remove_menu_page( 'edit-comments.php' ); // Removendo o menu de Ferramentas remove_menu_page( 'tools.php' ); // Removendo o gestor de Links remove_menu_page( 'link-manager.php' ); // Removendo o gestor de Temas remove_menu_page( 'themes.php' ); // Removendo o gestor de Plugins //remove_menu_page( 'plugins.php' ); }
A action hook processa a função que irá tratar de chamar sucessivas vezes as funções remove_menu_page e remove_submenu_page. Desta forma você poderá remover o que quiser ou não. Basta simplesmente comentar (inserir // antes do código) para deixar essa funcionalidade intacta ou descomentar para remover do menu a funcionalidade pretendida.
GERIR SITES SIMPLES COM O WORDPRESS
Já sabemos que o WordPress é bastante poderoso tanto quando atuando como um simples gestor de blogs assim como quando atuando como um verdadeiro CMS. Você conseguirá tirar o máximo de partido do WordPress de qualquer uma das maneiras. Acontece que, em alguns casos, o WordPress disponibiliza funcionalidades em demasia para o website que estamos a implementar. Websites que necessitem apenas de 4 ou 5 páginas de conteúdo, poderá ser como “um castigo” para quem vai gerir esse conteúdo. A solução passa por remover funcionalidades, seja como descrito em cima ou através de um plugin.
Felizmente os colegas da PixoPoint contribuiram para a comunidade através de uma solução de plugin que converte o WordPress num CMS básico para gestão de websites estáticos simples. Esse plugin remove todo o tipo de funcionalidades complicadas que vem por defeito com o WordPress e que não são necessárias para este tipo de sites.
DOWNLOAD e INSTALAÇÃO
Você poderá fazer o download gratuito do plugin clicando aqui.
Depois de ter consigo em posse o ficheiro ZIP poderá fazer login na administração e fazer o upload do plugin através da página de plugins, clicando em adicionar novo plugin.
Se por alguma razão não funcionar, poderá apenas fazer o upload dos ficheiros conteúdos no ZIP para o diretório wp-content/plugins/ do seu WordPress.
Nota: este plugin apenas simplifica a área de administração do WordPress para contas abaixo do administrador. Desta forma, se você estiver logado como amdinistrador você não verá nenhuma diferença. Terá que criar uma conta de editor. Veremos mais abaixo como alterar este comportamento.
TEMA SIMPLES PARA WEBSITES ESTÁTICOS
Para além do plugin, a PixoPoint lançou um tema simples para que você possa começar a programar seu novo website simples a partir dele.
ENTENDENDO O CÓDIGO DO PLUGIN
Se você abrir o ficheiro ZIP ryans-simple-cms.zip descarregado anteriormente, você verá 3 ficheiros, sendo que um é o plugin propriamente dito, pois é o único ficheiro PHP. Abra-o num editor de ficheiro simples. Se tiver em ambiente Windows recomendo usar o Notepad++.
Para a funcionalidade que ele exerce é bem pequenino, você não acha? A explicação para isso é que este plugin usa o mesmo conceito de hooks que vimos em cima. Passando toda parte informativa e de comentários do plugin, iremos dar uma olhada no método __construct() do plugin:
public function __construct() { // Add action hooks add_action( 'admin_menu', array( $this, 'remove_menus' ) ); add_action( 'wp_before_admin_bar_render', array( $this, 'remove_admin_bar_links' ) ); add_action( 'admin_menu', array( $this, 'remove_meta_boxes' ) ); add_action( 'wp_head', array( $this, 'simplecms_comments' ) ); }
Este método adiciona as acções necessárias para despoletar as funções que vão simplificar o painel da administração. A hook admin_menu é usada para remover menus e também as meta boxes do painel de administração do WordPress, da mesma maneira que fizémos no artigo anterior. A hook wp_before_admin_bar_render serve para remover ou adicionar links na barra de administração. Neste caso vamos tirar vários links que não queremos que estejam presentes.
function remove_admin_bar_links() { // Bail out now if not in admin or user can't activate plugins if ( current_user_can( 'manage_options' ) || ! is_admin() ) return; global $wp_admin_bar; $wp_admin_bar->remove_menu( 'comments' ); $wp_admin_bar->remove_menu( 'new-content' ); $wp_admin_bar->remove_menu( 'blog-6-n' ); $wp_admin_bar->remove_menu( 'blog-6-c' ); }
Esta função remove, cada um dos itens que não queremos que esteja presente na barra de adminsitração. Neste caso, remove as ligações para novo conteúdo e comentários usando o método remove_menu que aceita uma string como parâmetro. Essa string é o ID renderizado do objecto que queremos remover.
function remove_menus () { // Bail out now if not in admin or user can't activate plugins if ( current_user_can( 'manage_options' ) || ! is_admin() ) return; // List of items to remove $restricted_sub_level = array( 'edit-tags.php?taxonomy=category' =>'edit.php', // This doesn't actually do anything since posts aren't present, but left here so that you can see how to remove sub menus if needed in your own projects 'edit.php' => 'TOP', 'edit-comments.php' => 'TOP', 'tools.php' => 'TOP', 'link-manager.php' => 'TOP', ); foreach( $restricted_sub_level as $page => $top ) { // If a top leve page, then remove whole block if ( 'TOP' == $top ) remove_menu_page( $page ); else remove_submenu_page( $top, $page ); } // Redirect from dashboard to edit pages - Thanks to WP Engineer for this code snippet ... http://wpengineer.com/redirects-to-another-page-in-wordpress-backend/ if ( preg_match( '#wp-admin/?(index.php)?$#', esc_url( $_SERVER['REQUEST_URI'] ) ) ) wp_redirect( admin_url( 'edit.php?post_type=page' ) ); }
Este método da classe remove os menus da mesma maneira que nós removemos em cima, passando a slug da página do painel que queremos remover nas funções remove_menu_page e remove_submenu_page. Esta técnica aqui usada é bastante intuitiva. Você cria um array com todas as slugs das páginas que quer remover do painel, e depois aplica um loop foreach que vai passando cada um dos elementos do array um a um e removendo-o através da função.
É nesta função que você poderá tirar a condição do administrador não poder ver as simplificações. Retire apenas o código seguinte:
// Bail out now if not in admin or user can't activate plugins if ( current_user_can( 'manage_options' ) || ! is_admin() ) return;
Analisando o final do método, vemos que existe uma hack ao link da administração. Basicamente o que ele faz é, caso haja uma chamada à administração do WordPress, ele redireciona da dashboard para a listagem de páginas. Desta maneira torna o processo de criação de páginas mais intuitivo.
Até breve!