Gostaria de saber como posso encontrar a lesma dos plug-ins (slug = nome interno usado pelo WordPress para fazer atualizações de plug-ins e determinar quais plug-ins estão ativos no momento)? Geralmente é o nome da pasta do plug-in, mas se um plug-in não possui uma pasta, é o nome do arquivo (como hello.php). Existem outras exceções?
- Caracteres minúsculos e maiúsculos são importantes?
- Um plug-in pode ter uma lesma diferente do nome da pasta? E se houver um plugin chamado hello.php e outro /hello.php/hello.php?
plugins
plugin-development
slug
Paulo
fonte
fonte
Respostas:
A string usada no WordPress para identificar o plug-in é:
… Onde
$file
está um arquivo com os cabeçalhos do plugin .Portanto, se você estiver no seu plugin, obtenha o slug com:
fonte
dirname(plugin_basename(__FILE__))
.Se você instalar o WP-CLI , poderá obter a lista de plug-ins com slug e versão na linha de comando:
> wp plugin list
Sei que provavelmente não é o que você deseja, se precisar encontrar o código no código, mas ele me ajudou a trabalhar com o plugin TGM-Plugin-Activation.
Acho difícil trabalhar com o WordPress sem o WP-CLI, em geral é uma ferramenta muito útil para muitas tarefas comuns relacionadas ao WordPress.
fonte
A diferença entre o arquivo do plug-in (principal) e a lesma do plug-in é um local em que o Codex do WordPress poderia fazer muito melhor. Entendo sua confusão como a senti muito recentemente (misturada com frustração).
Foi isso que aprendi fazendo um "trabalho de detetive" no código principal do WordPress.
O arquivo de plug-in
Esta é a maneira única que o WordPress identifica e registra um plug-in. É composto pelo diretório do plugin E pelo arquivo principal do plugin (aquele com o cabeçalho do arquivo que contém os vários detalhes do plugin, como versão, autor etc.).
Seria algo como isto:
your-plugin-directory/main-file.php
Se você olhar para os dados dos plug-ins ativos (retornados por
get_option( 'active_plugins' )
), verá que o WordPress precisa apenas desse arquivo de plug-in para identificar corretamente os plug-ins.Você pode optar por pensar nele como o caminho relativo do arquivo principal do plug-in (em relação ao
wp-content/plugins/
diretório que está). Você pode "compor" o caminho absoluto do arquivo principal do plugin com algo como isto:trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file
O próprio núcleo gera o arquivo de plug-in assim:
$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );
A lesma do plugin
É de se esperar que o "slug" do plugin seja algum tipo de ID padronizado para o plugin, como o post slug é para posts - então você pode usar esse "slug" para fornecê-lo às principais funções do WordPress e fazer as coisas acontecerem.
Na verdade não. Depois de pesquisar no núcleo por referências a lesmas de plug-in (ou temas para o que importa) e encontrar quase nada, acho que tenho uma noção disso.
As únicas lesmas reais são aquelas para coisas acessíveis através de uma URL única: postagens, páginas, taxonomias etc. Esse é o objetivo de pegar o nome de algo (como o título de uma postagem) e gerar uma versão amigável da URL: usar em um URL.
Mas onde usamos "lesmas" de tema / plugins em URLs?
Não fazemos isso em instalações individuais do WordPress - nem no administrador do WP nem no frontend.
No entanto, há um lugar muito emaranhado com o código do WordPress , o site WordPress.org. As pessoas têm dificuldade em distinguir entre os dois, incluindo o fato de que, de alguma forma, é comum entre os desenvolvedores considerar o tema do WordPress.org ou as lesmas de plug-in que devem funcionar da mesma forma que uma publicação ou lesma de página.
Eles servem ao mesmo objetivo, mas em sites separados . No WordPress.org, eles são usados para identificar exclusivamente um tema de outros e um plug-in do restante (em URLs como
https://wordpress.org/plugins/akismet/
).Mas quando se trata de instalações individuais do WordPress, a mesma exclusividade não pode ser garantida, porque não há autoridade para aplicá-lo (como no WordPress.org). Poderia funcionar se todos os plugins e temas viessem do WordPress.org, mas felizmente não é esse o caso.
O que o código do WordPress faz com as lesmas de tema / plugin?
O código principal do WordPress não depende de lesmas de tema / plug-in para executar tarefas como instalar, ativar, atualizar, excluir temas ou plug-ins.
Para temas, ele se baseia no diretório de temas, já que o principal ponto de entrada de um tema é o
style.css
arquivo (você não pode usar outro arquivo CSS para manter o cabeçalho de detalhes do tema).Para plugins, ele se baseia no diretório do plug - in E no arquivo principal do plug-in , já que os plug-ins podem chamar seu arquivo principal como quiserem.
A única coisa para a qual o núcleo usa slugs de tema / plug-in é quando ele lida com temas e plug-ins do diretório WordPress.org: buscando listas de plug-ins, verificando atualizações, relatando os dados de uso do diretório e assim por diante.
Para encerrar as coisas sobre as lesmas do plug-in: sempre que você encontrar dados do plug-in com a
slug
entrada, 99% do tempo se referirá à lesma WordPress.org do plug-in.Como identificamos plugins?
Se você deseja ativar, atualizar, desativar ou excluir programaticamente um determinado plug-in em uma instalação do WordPress, use o arquivo do plug-in. Você pode obtê-lo assim no arquivo principal do seu plugin:
$plugin_file = plugin_basename( __FILE__ );
Se você deseja segmentar um determinado plug-in a partir de outro, as coisas ficam um pouco mais complicadas, pois você precisa contar com um pouco de "adivinhação".
Você pode codificar o nome do plug-in, pesquisar o plug-in na lista de todos os plug-ins (consulte get_plugins () ) e obter o arquivo do plug-in a partir daí.
Se você conhece uma classe ou função definida por esse plug-in, pode usar a reflexão (consulte esta resposta para classes e esta para funções).
Espero que isso ajude você e outras pessoas que possam ter dificuldade em lidar com "lesmas de plug-ins". Poderia ter me poupado algumas horas :)
fonte
Só para esclarecer desde o post original.
A maneira como encontrei a lesma do plug-in é primeiro navegando até a pasta do plug-in, abrindo a pasta associada ao plug-in e, finalmente, encontrando o arquivo que hospeda o código abaixo. Depois de encontrar esse arquivo, o nome do arquivo menos a extensão deve ser a lesma do seu plug-in.
Por exemplo, se eu encontrei o código abaixo em um arquivo chamado advanced-plugin-awesomeness.php, minha lesma seria advanced-plugin-awesomeness.
Espero que isto ajude!
fonte
Infelizmente, a lesma é retornada pela API de atualização, a resposta a esta pergunta não é tão óbvia, a menos que você consulte a própria API. No entanto, se você quiser ver uma lista dos seus slugs atuais do plug-in e dos dados relacionados ao plug-in, basta:
Mas, isso não terá informações sobre um plug-in recém-instalado por mais 12 horas; você teria que fazer algo diferente para eles, por exemplo. use uma versão modificada do código de
wp_update_plugins
emwp-includes/update.php
...Tendo feito isso para testá-lo, parece confirmar que, independentemente do nome do arquivo, localização ou maiúscula do plug-in, é na verdade o
Plugin Name
que gera a atualização, provavelmente através desanitize_title
. Portanto, acredito que a resposta correta deve ser:fonte
Você pode obter o nome da pasta do plugin (PHP5.3 +) passando DIR para plugin_basename (), assim:
fonte
Tente o seguinte:
fonte
Para a maioria dos plugins, o "slug" será o mesmo que o nome do diretório. Embora as pessoas .org possam definir o nome do diretório para o que quiserem.
fonte