Parece que muitos desenvolvedores de plugins gastam tempo adicionando ganchos de filtro / ação para permitir que os usuários ajustem a funcionalidade de seus produtos. O que é ótimo, mas o que eles geralmente não fazem é fornecer uma lista de ganchos e quantos argumentos eles levam.
Alguém encontrou a melhor maneira automatizada de apontar para um diretório de plugins (ou temas) e ver uma lista de todos os ganchos disponíveis?
Eu pareço alguns plugins que procuram por ganchos, mas até onde eu sei, eles mostram quais estão realmente sendo chamados para renderizar uma determinada página. O que eu recebo pode ser útil. Mas, às vezes, se eu sei que estou interagindo com um plug-in específico, quero saber todos os lugares em que ele pode me permitir vincular uma ação ou filtro.
Então, o que realmente estou procurando é algo que, dado um diretório raiz do plug-in, crie uma lista na qual cada item inclua:
- tag
- tipo (ação ou filtro)
- número de argumentos
- onde é chamado (via
do_action()
ouapply_filter()
) na fonte
Um script seria ótimo, pois isso provavelmente poderia HTMLify muito bem a coisa toda e mostrá-lo diretamente na interface do administrador para cada plug-in. Mas mesmo um script de linha de comando que gera um arquivo estático útil seria ótimo.
Respostas:
Não há nenhum script ou plugin que eu conheça para fazer o que você deseja. Como você afirmou, existem scripts ( mesmo variáveis globais ) que você pode usar para imprimir filtros e ações atualmente em uso.
Quanto aos filtros e ações dormentes, eu escrevi duas funções muito básicas ( com alguma ajuda aqui e ali ), que encontra todos
apply_filters
edo_action
instâncias em um arquivo e, em seguida, imprime-lo para foraFUNDAMENTOS
Usaremos a
RecursiveDirectoryIterator
,RecursiveIteratorIterator
eRegexIterator
classes PHP para obter todos os arquivos do PHP dentro de um diretório. Como exemplo, no meu host local, eu useiE:\xammp\htdocs\wordpress\wp-includes
Em seguida, percorreremos os arquivos e procuraremos e retornaremos (
preg_match_all
) todas as instâncias deapply_filters
edo_action
. Eu o configurei para coincidir com instâncias aninhadas de parênteses e também para coincidir com possíveis espaços em branco entreapply_filters
/do_action
e o primeiro parênteseSimplesmente criaremos uma matriz com todos os filtros e ações e, em seguida, percorreremos a matriz e produziremos o nome do arquivo, filtros e ações. Iremos pular arquivos sem filtros / ações
ANOTAÇÕES IMPORTANTES
Essas funções são muito caras. Execute-os apenas em uma instalação de teste local.
Modifique as funções conforme necessário. Você pode decidir gravar a saída em um arquivo, criar uma página de back-end especial para isso, as opções são ilimitadas
OPÇÃO 1
A primeira função de opções é muito simples; retornaremos o conteúdo de um arquivo como uma string usando
file_get_contents
, pesquisemos as instânciasapply_filters
/do_action
e simplesmente produzimos o nome do arquivo e os nomes de filtro / açãoEu comentei o código para facilitar o acompanhamento
Você pode usar a seguir em um modelo, front-end ou back-end
Isso imprimirá
OPÇÃO 2
Essa opção é um pouco mais cara de executar. Esta função retorna o número da linha onde o filtro / ação pode ser encontrado.
Aqui usamos
file
para explodir o arquivo em uma matriz, depois pesquisamos e retornamos o filtro / ação e o número da linhaVocê pode usar a seguir em um modelo, front-end ou back-end
Isso imprimirá
EDITAR
Isso é basicamente o máximo que posso fazer sem que os scripts atinjam o tempo limite ou fiquem sem memória. Com o código na opção 2, é tão fácil quanto ir para o referido arquivo e a referida linha no código-fonte e, em seguida, obter todos os valores de parâmetro válidos do filtro / ação, também, o mais importante, obter a função e o contexto em que o filtro / ação é usado
fonte
Parece que o WP Parser faz o que você está procurando. É usado para gerar a referência oficial do desenvolvedor . Ele lista parâmetros, tags @since e referências à fonte. Ele funciona com todos os plugins do WordPress e pode ser acessado via linha de comando:
fonte
Velozes e Furiosos
A boa e velha
*nix
linha de comando é sempre útil:Muito mais opções via
#man grep
.Podemos até criar um script bash simples
wp-search.sh
:e execute-o com.
Pretty output
Podemos usar o
--color
atributo para colorir a saída degrep
, mas observe que ele não funcionaráless
.Outra opção seria gerar uma tabela HTML para os resultados da pesquisa.
Aqui está um
awk
exemplo que eu construí que exibe os resultados da pesquisa como uma tabela HTML noresults.html
arquivo:onde usei esse truque para remover todos os espaços em branco à esquerda e este para imprimir todos os campos, exceto o primeiro.
Eu uso
sed
aqui apenas para adicionar espaço extra após o segundo dois pontos (:
), caso não haja espaço lá.Roteiro
Poderíamos adicionar isso ao nosso
wp-search.sh
script:onde você tem que ajustar
/path/to/some/directory
e/path/to/results.html
às suas necessidades.Exemplo - Pesquisando um Plug-in
Se tentarmos isso no
wordpress-importer
plugin com:o
results.html
arquivo será exibido como:Exemplo - Pesquisando o Núcleo
Eu testei o tempo para o núcleo:
e é rápido!
Notas
Para obter um contexto extra, podemos usar o
-C NUMBER
grep.Poderíamos modificar a saída HTML de várias maneiras, mas espero que você possa ajustá-lo ainda mais às suas necessidades.
fonte