Parece que muchos desarrolladores de complementos se toman el tiempo para agregar ganchos de filtro / acción para permitir a los usuarios ajustar la funcionalidad de sus productos. Lo cual es genial, pero lo que a menudo no hacen es proporcionar una lista de ganchos y cuántos argumentos toman.
¿Alguien ha encontrado la mejor manera automatizada de apuntar a un directorio de plugins (o temas) y ver una lista de todos los ganchos disponibles?
Me parecen algunos complementos que escanean en busca de ganchos, pero por lo que puedo decir, te muestran cuáles están siendo llamados para representar una página determinada. Lo que consigo puede ser útil. Pero a veces, si sé que estoy interactuando con un complemento en particular, quiero saber cada lugar en el que me permita conectar una acción o filtro.
Entonces, lo que realmente estoy buscando es algo que, dado un directorio raíz del complemento, creará una lista donde cada elemento incluye:
- etiqueta
- tipo (acción o filtro)
- número de argumentos
- donde se llama (vía
do_action()
oapply_filter()
) en la fuente
Una secuencia de comandos sería genial, ya que esto presumiblemente podría HTMLify todo y mostrarlo directamente en la interfaz de usuario de administración para cada complemento. Pero incluso un script de línea de comandos que genera un archivo estático útil sería genial.
Respuestas:
No hay ningún script o complemento que yo sepa que haga lo que quiera. Como ha dicho, hay secuencias de comandos ( incluso variables globales ) que puede usar para imprimir filtros y acciones que se utilizan actualmente.
En cuanto a los filtros y acciones latentes, he escrito dos funciones muy básicas ( con algo de ayuda aquí y allá ), que busca todos los
apply_filters
ydo_action
las instancias en un archivo y luego lo imprimeLO ESENCIAL
Vamos a utilizar el
RecursiveDirectoryIterator
,RecursiveIteratorIterator
yRegexIterator
las clases PHP para obtener todos los archivos del PHP dentro de un directorio. Como ejemplo, en mi host local, he usadoE:\xammp\htdocs\wordpress\wp-includes
Luego recorreremos los archivos y buscaremos y devolveremos (
preg_match_all
) todas las instancias deapply_filters
ydo_action
. Lo configuré para que coincida con las instancias anidadas de paréntesis y también para que coincida con los espacios en blanco posibles entreapply_filters
/do_action
y el primer paréntesisSimplemente crearemos una matriz con todos los filtros y acciones y luego recorreremos la matriz y mostraremos el nombre del archivo, los filtros y las acciones. Omitiremos archivos sin filtros / acciones
NOTAS IMPORTANTES
Estas funciones son muy caras. Ejecútelos solo en una instalación de prueba local.
Modifique las funciones según sea necesario. Puede decidir escribir la salida en un archivo, crear una página especial para eso, las opciones son ilimitadas
OPCIÓN 1
La primera función de opciones es muy simple, devolveremos el contenido de un archivo como una cadena, buscaremos
file_get_contents
las instanciasapply_filters
/do_action
y simplemente enviaremos el nombre de archivo y los nombres de filtro / acciónHe comentado el código para seguirlo fácilmente
Puede usar a continuación en una plantilla, interfaz o backend
Esto imprimirá
OPCION 2
Esta opción es un poco más costosa de ejecutar. Esta función devuelve el número de línea donde se puede encontrar el filtro / acción.
Aquí usamos
file
para explotar el archivo en una matriz, luego buscamos y devolvemos el filtro / acción y el número de líneaPuede usar a continuación en una plantilla, interfaz o backend
Esto imprimirá
EDITAR
Esto es básicamente todo lo que puedo hacer sin que los scripts excedan el tiempo de espera o se queden sin memoria. Con el código en la opción 2, es tan fácil como ir a dicho archivo y dicha línea en el código fuente y luego obtener todos los valores de parámetros válidos del filtro / acción, también, lo que es más importante, obtener la función y el contexto adicional en el que se usa el filtro / acción
fuente
Parece que WP Parser hace lo que estás buscando. Se utiliza para generar la referencia oficial del desarrollador . Enumera parámetros, etiquetas @since y referencias a la fuente. Funciona con todos los complementos de WordPress y se puede acceder a través de la línea de comandos:
fuente
El rápido y el furioso
La buena
*nix
línea de comandos siempre es útil:Muchas más opciones a través de
#man grep
.Entonces incluso podemos crear un script bash simple
wp-search.sh
:y ejecutarlo con
Salida bonita
Podemos usar el
--color
atributo para colorear la salida degrep
, pero tenga en cuenta que no funcionará conless
.Otra opción sería generar una tabla HTML para los resultados de búsqueda.
Aquí hay un
awk
ejemplo que construí que genera los resultados de búsqueda como una tabla HTML en elresults.html
archivo:donde utilicé este truco para eliminar todos los espacios en blanco iniciales y este para imprimir todos los campos excepto el primero.
Lo uso
sed
aquí solo para agregar espacio adicional después del segundo colon (:
), en caso de que no haya espacio allí.Guión
Podríamos agregar esto a nuestro
wp-search.sh
script:donde tiene que ajustar el
/path/to/some/directory
y/path/to/results.html
a sus necesidades.Ejemplo: buscar un complemento
Si intentamos esto en el
wordpress-importer
complemento con:entonces el
results.html
archivo se mostrará como:Ejemplo: búsqueda del núcleo
El tiempo lo probé para el núcleo:
y es rapido!
Notas
Para obtener un contexto adicional, podríamos usar el
-C NUMBER
de grep.Podríamos modificar la salida HTML de varias maneras, pero esperamos que pueda ajustar esto aún más a sus necesidades.
fuente