Estou prestes a escrever um script para fazer uma nova instalação do WordPress 3.0.1 e adicionar todos os recursos iniciais de um site . É para uma empresa que instala muitos sites semelhantes e precisa de um ponto de partida padrão em configuração e dados.
- Gostaria de saber se alguém já fez isso e se sim, se eles podem compartilhar seu código?
Eu imagino que ajustaremos esse script toda vez que eles criarem um novo site, para que a codificação seja boa, embora eventualmente (após experiência suficiente) eu queira converter em um plugin.
Aqui está a lista básica de tarefas que acho que precisaremos (elas assumem que eu já comecei com o WordPress 3.0.1 já instalado e meus plugins personalizados e tema personalizado copiado nos diretórios apropriados) :
// Create users for the current site
// Delete Hello Dolly Plugin
// Download, Install and Activate repository plugins
// Activate Custom Plugins (assume the plugins are already there)
// Activate Custom Theme
// Delete Hello Post
// Delete Comment on Hello Post
// Create Pages with Starter Content
// Create Initial Custom Post Types with Starter Content
// Create Multiple Menus
// Create Menu Items for those Menus linking to Pages and wp-login.php
// Create Initial Taxonomy Terms
// Set Desired Permalinks Setting
// Set Static Front Page Setting
É isso (embora eu possa identificar mais quando entrar nele).
Mais uma vez, estou procurando um código que possa copiar e modificar, para que eu não precise descobrir todos esses detalhes (o que não é difícil, é apenas tedioso e consome muito tempo) .
Ah, mais uma coisa, eu tenho que começar agora, então quanto mais cedo melhor! :-)
fonte
Create Menus for Custom Pages
? Você quer dizer áreas de menu individuais em algumas páginas ou o quê?Respostas:
Como mencionei, começaria a trabalhar nessa necessidade imediatamente, por isso estou avançando. Dado que estou derrubando estes, achei melhor começar a publicá-los. Ainda assim, se alguém puder / irá postar (algumas das) partes que eu não fiz, ficarei feliz em permitir que você copie o que eu fizesse e selecione sua resposta como a melhor resposta. Até lá, vou começar a postar o código.
Primeira coisa: Incluir
wp-load.php
:Como estamos criando um arquivo autônomo na raiz do site para executar a inicialização que será usada apenas para "inicializar" um site (eu chamei de meu
/my-init.php
) , começamos incluindo o/wp-load.php
carregamento das funções da API do WordPress:Criando usuários para o site
Usaremos a
wp_insert_user()
função localizada/wp-includes/registration.php
para criar nossos usuários. Como esse arquivo não é carregado por padrão, teremos que carregá-lo sozinhos com uma chamada pararequire_once()
.Também usaremos a
get_user_by()
função para ver primeiro se o usuário já foi criado; não é necessário executar o código duas vezes, se não o tiverem. NOTA: Este é um padrão a seguir; por exemplo, nosso script não deve duplicar ou substituir nada se chamado várias vezes, especialmente depois que os usuários adicionam ou alteram dados para qualquer um dos itens que planejamos inicializar.Excluindo o plug-in "Hello Dolly"
Para excluir o plugin "Hello Dolly" ( desculpe Matt ) , usaremos a
delete_plugins()
funçãodelete_plugins()
espera uma matriz de caminhos de arquivo que sejam relativos ao/wp-content/includes/
diretório. Para o plug-in Hello Dolly, o caminho do arquivo é simplesmentehello.php
porque o plug-in Hello Dolly não é armazenado em seu próprio diretório, mas para a maioria dos plug-ins ele será na forma de{$subdir}\{$filename}.php
; ou seja, o caminho do arquivo para o Akismet éakismet/akismet.php
.No entanto,
delete_plugins()
não está disponível até a inclusão/wp-admin/includes/plugin.php
e também existe uma dependência,wp-admin/includes/file.php
portanto, nósrequire_once()
dois antes de ligardelete_plugins()
. Finalmente, usamosWP_PLUGIN_DIR
constante combinada comfile_exists()
para verificar se o arquivo principal do plug-in existe antes de tentar excluí-lo ( isso não importa se tentássemos excluir um arquivo ausente, mas é mais elegante verificar primeiro e você pode precisar saber como por alguma outra razão) :Observe que, às vezes
delete_plugins()
, falha por causa das permissões de arquivo ou talvez pelo fato de um plug-in estar ativado no momento ou por algum outro motivo que você precise resolver primeiro, mas para o nosso caso de uso, o Hello Dolly desaparece sem brigas.Fazendo Download, Instalando e Ativando Plug-ins de Repositório
Na verdade, eu não preciso baixar plugins do repositório agora (eu estava pensando que seria bom ter) , vamos deixar esse requisito deslizar e revisá-lo mais tarde.
Ativando seus plugins
Em seguida, ative nossos próprios plugins personalizados. Estamos assumindo que já os carregamos no diretório do plug-in e tudo o que precisamos para ativá- los no WordPress. ( Nota : Essa técnica também funcionará para ativar plug-ins de repositório, apenas não fará o download e os instalará primeiro.)
Vamos usar a
activate_plugin()
função que gostadelete_plugins()
requer/wp-admin/includes/plugin.php
a ser incluídos, mas não precisa/wp-admin/includes/file.php
, no caso você está apenas a necessidade de automatizar a ativação e não exclusão.Testaremos novamente a existência (não é necessário ativar, se não estiver lá, eh?) E também verificaremos usando a
is_plugin_active()
função que o plug-in ainda não foi ativado. Observe que desta vez usei algumas variáveis ($plugin_filepath
e$plugin_dir
) para não duplicar o identificador do plug-in várias vezes.Nosso exemplo a seguir ativa o plug-in
my-custom-plugin.php
localizado nomy-custom-plugin
subdiretório:Ativando seu tema preferido
Ativar um tema é um pouco mais fácil do que excluir ou ativar um plugin, comparativamente; uma chamada de função é tudo o que for necessário:
switch_theme()
. Aswitch_theme()
função aceita dois (2) parâmetros: o modelo e a folha de estilo . Bem, pelo menos é assim que os parâmetros são nomeados. Você pode estar mais familiarizado com os termos Tema pai e Tema filho .Supondo que você tenha criado um Tema filho com o tema TwentyTen padrão que vem com o WordPress como Tema pai e o tenha chamado de "Meu tema personalizado" e colocado no
/wp-content/themes/my-custom-theme
diretório, você ativaria seu tema usando esta chamada:Mas e se não for um tema infantil? Isso é fácil, basta passar o slug do diretório / identificador do tema (ou seja, o nome do subdiretório
/wp-content/themes
que contém o seu tema) como ambos os parâmetros. Supondo que você deseja ativar o tema Temático por Ian D Stewart, você chamaswitch_theme()
assim:Pessoalmente, acho um pouco estranho ter que acompanhar os dois detalhes aqui, então escrevi uma função chamada
activate_my_theme()
que primeiro verifica para garantir aget_current_theme()
função e, se não, a ativa. Você só precisa dizer o tema filho (também conhecido como "folha de estilo") e descobrir o tema principal para você (também conhecido como "modelo") , capturando os detalhes daget_theme()
função.Um ponto chave para estar ciente ; a
get_theme()
função espera receber o nome do Tema filho, NÃO é o slug do diretório / identificador do tema. (O nome vem da seção "Nome do tema:" no cabeçalho dostyle.css
arquivo do tema . Felizmente, aget_current_theme()
função retorna o nome também.)Inspecionando o cabeçalho no
style.css
arquivo do tema padrão do WordPress Twenty Ten , vemos que seu nome é de fato'Twenty Ten'
:Excluindo a publicação "Hello World"
Em seguida, queremos excluir a postagem "Hello World" . Você pode ter visto que o @Rarst nos mostrou como usar a
wp_delete_post()
função que é exatamente o que precisamos. Como ele explicou, o segundo parâmetro excluirá totalmente o post, em vez de movê-lo para o lixo, e o primeiro parâmetro é o$post->ID
.É claro que seria bom poder especificar a lesma em vez da
$post->ID
e então decidi encontrar uma maneira de fazer isso. Depois de alguns spelunking, descobri que o WordPress tem uma função chamada infelizmente chamada,get_page_by_path()
que na verdade nos permite procurar qualquer tipo de postagem por sua lesma (infelizmente, ela é chamada porque você pode ignorá-la ao tentar encontrar algo que funcione com outros tipos de postagem'page'
).Como passamos
get_page_by_path()
a constante definida pelo WordPress,OBJECT
ela retornará para nós uma postagem na forma de um objeto de publicação. Para o terceiro parâmetro que passamos'post'
para indicar que queríamos que ele procurasse os tipos de post'post'
. Comoget_page_by_path()
retornará o objeto de postagem que precisamos ou retornaránull
se nenhuma postagem corresponder à lesma, podemos verificar a existência e fazer uma pesquisa ao mesmo tempo:Nota: Poderíamos ter executado o código para excluir todas as postagens no banco de dados, mas, se o tivéssemos, não poderíamos executá-lo novamente depois de adicionarmos as postagens que queremos manter e essa foi uma das restrições de design.
Próximo...
Continuarei adicionando isso à medida que for descobrindo até terminar ou até que alguém ajude.
fonte
Definir links permanentes desejados
Um novo projeto de tema (impressionante) que eu me deparei esta semana, muito focado na funcionalidade HTML5 / CSS3, tem seu próprio script 'bootstrap' para criar algum conteúdo padrão, incorporar configurações de link permanente, definir uma raiz relativa para a instalação do site etc. os recursos são chamados na ativação do tema. O projeto se chama Raízes e o código pode ser baixado aqui ; Não aceito crédito por esse código. Dito isso, aqui está o código para definir automaticamente / ano / nome do post como a estrutura do link permanente (e os ganchos de ativação abaixo para o $ pagenow global são explicados aqui: http://foolswisdom.com/wp-activate-theme-actio/ .) .
?>
fonte
Excluir o Hello Post (com comentário)
wp_delete_post( 1, true );
Direto dos
wp_delete_post()
documentos. O segundo parâmetro o destrói completamente, em vez de passar para o lixo.Criar menus
Isso cria um novo menu e adiciona todas as páginas existentes como itens. Não tenho certeza se está totalmente correto, não foi possível obter itens de menu para mostrar o
Page
rótulo entre outras coisas. De qualquer forma, meu cérebro está derretendo, então estou dando um tempo. Talvez alguém possa atualizar isso para algo mais confiável.fonte
Se eu entendi bem, você quer instalá-lo inicial - receio que sua abordagem esteja totalmente errada.
Uma maneira muito melhor, mais fácil e padronizada é criar o install.php e colocá-lo na pasta wp-content - ele é carregado automaticamente durante a instalação.
Lá você pode colocar sua própria função wp_install (como a própria função wordpress usa if (! Function_exist)) para que você possa configurar facilmente suas opções, ativar plugins, preencher posts iniciais, categorias, tags, usuários ...
A segunda opção pode ser a situação em que você deseja limpar o wp já existente (por exemplo, para a versão demo configurada a cada 30 minutos usando cron) - você pode a) truncar o banco de dados e usar o procedimento acima, ou criar o plugin que executa o mesmo.
fonte
install.php
e, segundo, há outros casos de uso em queinstall.php
não é aplicável. Sim,install.php
ele é usado, mas não cuida dos detalhes nem da panacéia que você sugere.Dê uma olhada neste script de instalação. https://github.com/Pravdomil/WP-Quick-Install
Pego suas idéias e alguns códigos e crio algo que você provavelmente está procurando.
Os recursos são: banco de dados de configuração, idiomas diferentes, criar usuários, definir configurações básicas do site, excluir plug-ins e modelos padrão, baixar instalar e ativar plug-ins e temas, avatar padrão, links permanentes, página estática.
Sinta-se livre para contribuir.
fonte