Se contamos com o exemplo simples hellodolly.php fornecido pelo WordPress , ou mesmo os mesmos documentos oficiais, nunca chega a escrever um plug-in bom e eficiente. Queremos aqui para analisar uma estrutura possível, então um esqueleto que pode ser usado várias vezes.
O Básico
Primeiro temos de compreender como e quando um plugin WordPress é carregado no sistema. Quando ativado por um plugin, o arquivo que contém o código principal, reconhecido pelas linhas clássicas de comentário:
1 2 3 4 5 6 7 8 | / * Nome Plugin: My Plugins Plugin URI: http://wordpress.org/extend/plugins/mioplugin/ Descrição: Descrição dos meus plugins Versão: 1.0.0 Autor: Giovambattista Fazioli URI Autor: http://labs.saidmade.com * / |
é carregado ou se não estão no front-end e, se nos encontramos na administração (back-end):

Este comportamento é em si mesmo correto, e, provavelmente, em muitos casos não é levado em conta pelo desenvolvedor. Além disso, alguns plugins tem uma estrutura (tais como configurações, e depois não têm necessidade de uma administração) que tornaria inútil deter-me sobre este ponto.
No entanto, é óbvio que alguns plugins ter uma administração consistente, isto é, que trazem com eles um monte de código usado apenas no backend do WordPress. Nestes casos, se você não tomar as precauções que você pode fazer upload para o front-end, a parte visível aos navegantes, o código completamente desnecessárias que não faz nada, mas pesa a carga do blog.
Possíveis conflitos: namespace
Do acima exposto, conclui-se outro fato importante, todos os plugins do WordPress são carregados na mesma área de operação, o que resulta na infeliz conseqüência que se dois plugins diferentes têm uma função (uma variável ou constante) tem o mesmo nome, estes entrarão em conflito uns com os outros!
O ideal, então, seria capaz de:
- Separar o carregamento do código para o front-end e back-end
- Proteger o "namespace" para evitar possíveis conflitos com outros plugins carregados no sistema
Front-end ou back-end?
A maneira mais fácil para determinar se ele está na administração (back-end) é para chamar a função is_admin() :
1 2 | is_admin ( ) ) // includi il codice lato back-end if (is_admin ()) / / Incluir o código de back-end else / / código incluem front-end |
Na prática, esquemática, podemos alcançar:

ou:
1 2 3 4 5 | is_admin ( ) ) { if (is_admin ()) { 'admin.php' ) ; require_once ('admin.php'); { Else {} 'client.php' ) ; require_once ('Client.php'); } |
Usando classes para proteger o namespace
Para evitar sobreposições desagradáveis é uma boa maneira de "quebrar" as nossas funções e nossas variáveis em recipientes adequados: objetos. Através da definição de uma classe temos mais oportunidade de proteger os nomes das nossas funções como podemos obter um benefício adicional de reutilização de código no plugin futuro. Esta técnica torna possível ter dois plugins diferentes, por isso dois objetos diferentes com o mesmo método (função). O conflito é eliminado graças à nomenclatura das diferentes classes e suas instâncias.
Plugin de esboço
Dito tudo isto, vemos como fazer um esboço (que você pode encontrar-se atualizado em uma Saidmade repositório do Google Code ), um esqueleto, você pode reutilizar sempre que precisa escrever um plugin. Primeiro de todos os objetos na nova organização para nos deixar perceber que, se é verdade que há uma separação da "net" entre o back-end e front-end também é verdade que alguns "recursos" são e serão compartilhados! Este, ao nível da programação orientada a objeto, ele aponta o caminho a percorrer ao longo de uma organização de código possível. Por exemplo, a intuição sugere que a criação de uma classe "mãe", ou seja, uma classe da qual derivam de nossas aulas "cliente" (front end) e "admin" (back-end), seria uma coisa boa!
Esta classe "mãe" irá conter todas as propriedades (variáveis) e métodos (funções) ambientes compartilhados pelo front-end e back-end:

Assim, teremos a nossa classe "mãe" e duas classes para o front-end e back-end:
1 2 3 | sketch_class.php wp-/ pai / classe wp-sketch_admin.php / classe / para o back-end sketch_client.php wp-/ / classe para o front-end |
O arquivo principal ( wp-sketch.php ) só serão incluídos em tempo hábil, e instanciar essas classes corretamente:
1 2 3 4 5 6 7 8 9 10 | 'wp-sketch_class.php' ) ; // load the core class require_once ('wp-sketch_class.php') / / carregar a classe principal is_admin ( ) ) { // check admin if (is_admin ()) {/ / Check administrador 'wp-sketch_admin.php' ) ; // load admin class require_once ('wp-sketch_admin.php') / / classe admin carga / / new WPSKETCH_ADMIN ( ) ; // create object Wp_sketch_admin WPSKETCH_ADMIN $ = new () / / criar o objeto { Else {} 'wp-sketch_client.php' ) ; // load client front-end class require_once ('wp-sketch_client.php') / / carga do cliente classe front-end new WPSKETCH_CLIENT ( ) ; // create object Wp_sketch_client WPSKETCH_CLIENT $ = new () / / criar o objeto } |
) ei nomi delle classi stesse ( WPSKETCH_ADMIN e WPSKETCH_CLIENT ), ma non i metodi e le proprietà in esse presenti. Este "contexto" você só tem que ser cuidadoso para definir exclusivamente as variáveis que contêm instâncias de classes ( $wp_sketch_admin e $wp_sketch_client ) e os nomes das próprias classes ( WPSKETCH_ADMIN e WPSKETCH_CLIENT ), mas os métodos e propriedades que contêm .
sono “sottoclassi” (figli) di WPSKETCH_CLASS , definita nel file wp-sketch_class.php . Ambas as classes WPSKETCH_ADMIN e WPSKETCH_CLIENT são "subclasses" (crianças) de WPSKETCH_CLASS , definido no arquivo wp-sketch_class.php . Este, como mencionado acima, só irá conter itens compartilhados (variáveis e funções), uma vez que é sempre carregado, independentemente de que estamos no back-end ou front-end.
Em conclusão ...
Você pode baixar o esqueleto inteiro de Saidmade o repositório do Google Code . . Neste você também vai encontrar um arquivo wp-sketch_functions.php , utilizados para evitar chamadas para as funções em um front-end para traduzir uma chamada de oggetto->metodo() . Na verdade, é um arquivo opcional nem sempre é necessário.
Possíveis desenvolvimentos desta abordagem são sempre uma melhor identificação da seção em que estamos operando e WordPress, e, neste sentido, uma ampla gama de ações de otimização a ser realizada, a fim de carregar apenas o código necessário e quando nós realmente precisamos. Ulteiori exemplos deste lado vamos vê-los em breve.











[...] Uma técnica para escrever rapidamente um WordPress plugin pode ser a de preparar um esqueleto (esboço) para começar. Especificações WordPress, de fato, muitas vezes levam a ter plugins estruturalmente muito semelhante, na verdade, são os nomes de funções e alterar seu conteúdo. No entanto, na preparação de um esqueleto, tenha em mente para não duplicar nomes, constantes ou funções usadas por outras pessoas (incluindo o nosso) plugin, caso contrário obter um plugins errore.Tutti ativas compartilham a mesma área de operação. Então, se um plugin tem uma função que é chamada abc_normalize () não outros plugins pode ter uma função com um nome identico.Caso remotamente? Coincidência? Embora à primeira vista parece um assunto completamente insignificante, é extremamente chato quando isso acontece, especialmente para o usuário final que se vê incapaz de usar um plugin. Também na definição das constantes (como TABLE_NAME, WP_MAIN_PATH, etc ...) é muito mais comum para obter duplicatas. Para mais detalhes: Sobre a estrutura de objetos de um Plugin Wordpress [...]
[...] Sobre a estrutura de um Plugin WordPress objeto Como estruturar as classes de um plugin WordPress para carregar ideal e reutilização de código. [...]
[...] Esta série com a continuação natural do artigo de Napolux, estrutura ou objeto com um blog wordpress plugin [...]
[...] Sobre a estrutura de objetos de um Plugin Wordpress [...]
Olá eu li este artigo grande e eu queria lhe fazer uma pergunta: eu criei um plugin para o gerenciamento de produtos classificados por categorias e outras categorias de wp criado por mim usando outras tabelas na plguin back-end trabalha duro para fazê-lo funcionar perfeitamente localizado no front-end que eu não sei como exibir a lista de produtos tanto para varejo ... ou seja, nn sei como fazê-lo trabalhar com permalinks reescrever mod estaria atuando muito bem.
deixe-me saber
Dominic
@ Serdominik: Olá Domingos, você poderia me dizer mais detalhadamente o que você precisa?
@ Giovambattista Fazioli:
Olá, obrigado por me dar uma resposta.
A minha pergunta é bastante difícil de entender em poucas linhas de texto e escrever é difícil fazer você entender (desculpe se eu lhe dar a você), em seguida, difícil de acompanhar comentários através do perguntas e respostas para mim também, entre muitas coisas que eu esqueça de ir e verificar Se por acaso eu vejo você respondeu hoje, depois de três dias. Se você quiser e se você sentir nn é uma desordem através de msn ou skype ou e-mail
Infelizmente, muitos preferem não comentar sobre detalhes do projeto que eu estou fazendo
[...] O código do produto segue a estrutura orientada a objetos padrão sobre os objetos descritos em um Plugin WordPress [...]
Discussão [...] sobre a estrutura de um Plugin está disponível em: Sobre a estrutura de objetos de um Plugin Wordpress, que mostra um esqueleto possível que um pacote corretamente [...]