Como exibir a barra lateral do WordPress em sites que não são WordPress
Enquanto trabalhava no meu último projeto, DevGrow Discussions, me deparei com a necessidade de incorporar toda a minha barra lateral do WordPress em um site que não seja WordPress - especificamente um fórum bbPress. Como faço uso de vários widgets para exibir posts populares e outros conteúdos dinâmicos, basta copiar e colar o HTML não seria suficiente. No final, existem apenas duas maneiras de fazer isso:
- Inclua seu wp-load.php arquivo em seu aplicativo e, com efeito, carregar a totalidade do WordPress para obter acesso às funções do plugin
- Use o armazenamento em cache simples para armazenar a barra lateral no formato HTML e inclua-a em qualquer outro aplicativo, depois a reconstrua conforme necessário quando um novo conteúdo for publicado
Se não for óbvio o suficiente, a primeira opção é muito dispendiosa em termos de consultas ao banco de dados e pode diminuir significativamente o seu site. A segunda opção requer um pouco de esforço na implementação, mas em termos de desempenho não há concorrência.
Caching sua barra lateral do WordPress
Antes de podermos escrever nossa função, precisamos entender exatamente o que estamos tentando fazer. Nosso objetivo é cache nossa barra lateral para um arquivo de texto e atualizar esse cache sempre que publicarmos uma postagem, altere nosso tema ou faça alterações nos widgets da barra lateral. Como estamos planejando usar nosso cache para exibir a barra lateral em um aplicativo diferente, precisamos poder excluir facilmente o cache sem nenhum efeito negativo (não queremos que nossa barra lateral seja quebrada a qualquer momento).
Para conseguir isso de forma eficiente, também criar um log de nossos arquivos em cache e use isso para determinar se o cache deve ser limpo. Em caso afirmativo, o arquivo de cache real será sobrescrito da próxima vez que alguém visitar o site WordPress, garantindo que uma barra lateral adequada seja sempre renderizada em ambos os aplicativos..
Criando as Funções
Para começar, abra o tema do seu funções.php arquivo e adicione as seguintes funções a ele:
cache de funções ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Configura arquivos e diretórios: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Cria o diretório de cache se ele não existir if (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Faça um log dos arquivos de cache com seu status atual if (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); else $ cacheLog = array (); if ($ task == 'start') // Se o cache existir, tiver menos de 6 horas e não estiver na fila de exclusão, mantenha-o - caso contrário, reconstrua o cache if (file_exists ($ cacheFileName) && (time () - filemtime ($ cacheFileName)) < $cacheTime && $cacheLog[$cacheFile] == 1) $cache = false; else $cache = true; ob_start(); elseif($task == 'end' && $cache) // If caching, save file contents and update log file_put_contents($cacheFileName,ob_get_contents()); ob_end_flush(); $cacheLog[$cacheFile] = 1; file_put_contents($cacheLogFile,serialize($cacheLog)); elseif($task == 'purge') // Set cache to delete and update log $cacheLog[$cacheFile] = 0; file_put_contents($cacheLogFile,serialize($cacheLog)); function cache_purge() $cacheDir = TEMPLATEPATH."/cache"; $cacheLogFile = $cacheDir."/cache-log.txt"; if(file_exists($cacheLogFile)) $cacheLog = unserialize(file_get_contents($cacheLogFile)); else $cacheLog = array(); foreach($cacheLog as $key=>$ value) $ cacheLog [$ key] = 0; file_put_contents ($ cacheLogFile, serialize ($ cacheLog));
Estas primeiras funções, esconderijo, é a chave para fazer nosso cache funcionar. Dependendo de onde em seu arquivo você o chamar, a função configurará os arquivos e diretórios corretos, verificará se um cache precisa ser construído e, em caso afirmativo, salvará a saída e atualizará o registro do cache. A função usa o buffer de saída do PHP para salvar qualquer HTML gerado em um arquivo de texto.
A segunda função é usada para limpar todos os arquivos de cache e é útil para adicionar aos ganchos existentes do WordPress. Com isso, podemos fazer com que nosso cache seja limpo sempre que nosso tema for atualizado, uma postagem for salva ou nossos widgets da barra lateral forem atualizados, adicionando o seguinte no final de funções.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Para obter uma lista completa dos ganchos, confira a Referência da API do plug-in do WordPress.
Configurando sua barra lateral
Agora que você tem as funções prontas, você pode começar a armazenar em cache sua barra lateral. Abra o seu sidebar.php e adicione esta linha ao começo do arquivo:
Esta função irá iniciar o armazenamento em cache da barra lateral de que necessita, caso contrário, não fará nada. Devido à maneira como a função de buffer de saída do PHP funciona, também precisamos fechar o buffer no final do arquivo também. Adicione esta linha ao final do mesmo arquivo:
Depois de adicionar essas duas linhas, atualize seu blog. Você não verá nada no seu navegador, mas verifique / cache diretório na sua pasta de tema e você deve ver dois arquivos começando com esconderijo-.
Usando seu cache
Agora que você criou seu arquivo de cache, você pode usá-lo em qualquer aplicativo que tenha acesso a ele. Você pode facilmente fazer isso usando o include_once função, mas eu também gosto de ter certeza que o arquivo existe, só para ser seguro:
Apenas certifique-se de verificar novamente se o caminho do arquivo está correto. Se você quiser definir seu cache para excluir de um aplicativo externo, você terá que incluir o cache_purge função em seu script em algum lugar e simplesmente chamar isso sempre que necessário. Depois disso, é simplesmente uma questão de chamar a função:
Conclusão
Essa técnica é realmente útil para qualquer aplicativo PHP, especialmente quando você deseja exibir conteúdo dinâmico sem ter que sacrificar o desempenho. Use-o para acelerar sua instalação do WordPress ou usar bits úteis (como a barra lateral) em qualquer outro site ou aplicativo.
Nota do editor: Este post foi escrito por Monjurul Dolon para Hongkiat.com. Monjurul é um designer de interface e desenvolvedor web baseado em Nova York, trabalhando como freelancer em sua vida. Ele blogs no DevGrow.com, onde ele compartilha dicas e recursos sobre desenvolvimento web e design.