Me pregunto cómo puedo encontrar el slug de los complementos (slug = nombre interno utilizado por WordPress para hacer actualizaciones de complementos y determinar qué complementos están actualmente activos). Generalmente es el nombre de la carpeta del complemento, pero si un complemento no tiene una carpeta, es su nombre de archivo (como hello.php). ¿Hay alguna otra excepción?
- ¿Importan los caracteres en minúsculas y mayúsculas?
- ¿Puede un complemento tener un slug diferente al nombre de su carpeta? ¿Qué pasa si hay un complemento llamado hello.php y otro /hello.php/hello.php?
plugins
plugin-development
slug
Pablo
fuente
fuente
Respuestas:
La cadena utilizada en WordPress para identificar el complemento es:
... donde
$file
hay un archivo con los encabezados del complemento .Entonces, si está en su complemento, obtenga la babosa con:
fuente
dirname(plugin_basename(__FILE__))
.Si instala WP-CLI , puede obtener la lista de complementos con su slug y versión desde la línea de comandos:
> wp plugin list
Sé que probablemente no sea lo que quieres, si necesitas encontrar la babosa en el código, pero me ha ayudado mientras trabajas con el complemento TGM-Plugin-Activation.
Me resulta difícil trabajar con WordPress sin la WP-CLI, en general es una herramienta muy útil para muchas tareas comunes relacionadas con WordPress.
fuente
La diferencia entre el archivo del complemento (principal) y la babosa del complemento es un lugar donde el Codex de WordPress podría funcionar mucho mejor. Entiendo tu confusión ya que la he sentido demasiado recientemente (mezclada con frustración).
Esto es lo que aprendí haciendo un "trabajo de detective" en el código central de WordPress.
El archivo de complemento
Esta es la forma única en que WordPress identifica y registra un complemento. Está compuesto por el directorio del complemento Y el archivo del complemento principal (el que tiene el encabezado del archivo que contiene los diversos detalles del complemento, como la versión, el autor, etc.).
Se vería algo así:
your-plugin-directory/main-file.php
Si observa los datos de complementos activos (devueltos por
get_option( 'active_plugins' )
), verá que WordPress solo necesita este archivo de complemento para identificar los complementos correctamente.Puede optar por considerarlo como la ruta relativa del archivo principal de su complemento (en relación con el
wp-content/plugins/
directorio que es). Puede "componer" la ruta absoluta del archivo de complemento principal con algo como esto:trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file
El núcleo mismo genera el archivo de complemento de esta manera:
$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );
La babosa del complemento
Uno esperaría que el plugin "slug" sea una especie de ID estandarizada para el plugin como el post slug es para publicaciones, por lo que podría usar este "slug" para proporcionarlo a las funciones principales de WordPress y hacer que las cosas funcionen.
Realmente no. Después de buscar en el núcleo referencias a las babosas de plugins (o temas para lo que importa) y no encontrar casi nada, creo que lo entiendo.
Las únicas babosas reales son aquellas para cosas accesibles a través de una URL única: publicaciones, páginas, taxonomías, etc. Ese es el objetivo de tomar el nombre de algo (como el título de una publicación) y generar una versión amigable de URL de eso: usar en una URL
Pero, ¿dónde usamos "slugs" de tema / complementos en las URL?
No hacemos eso en instalaciones individuales de WordPress, ni en el administrador de WP ni en la interfaz.
Sin embargo, hay un lugar muy enredado con el código de WordPress, el sitio de WordPress.org. La gente está teniendo dificultades para distinguir entre los dos, incluido que de alguna manera se hizo común entre los desarrolladores considerar que el tema de WordPress.org o las babosas de complementos deberían funcionar de la misma manera que una publicación o babosa de página.
Sirven para el mismo propósito pero en sitios web separados . En WordPress.org se usan para identificar de forma exclusiva un tema de otros y un complemento del resto (en URL como
https://wordpress.org/plugins/akismet/
).Pero cuando se trata de instalaciones individuales de WordPress, no se puede garantizar la misma singularidad porque no hay autoridad para hacerla cumplir (como en WordPress.org). Podría funcionar si todos los complementos y temas vinieran de WordPress.org, pero afortunadamente ese no es el caso.
¿Qué hace el código de WordPress con las babosas de tema / complemento?
El código central de WordPress no se basa en los slugs de tema / complemento para hacer cosas como instalar, activar, actualizar, eliminar temas o complementos.
Para los temas, se basa en el directorio de temas ya que el punto de entrada principal en un tema es el
style.css
archivo (no puede usar otro archivo CSS para contener el encabezado de detalles del tema).Para los complementos, se basa en el directorio de complementos Y en el archivo principal de complementos , ya que los complementos pueden llamar a su archivo principal como quieran.
Lo único para lo que el núcleo usa los slugs de tema / complementos es cuando maneja temas y complementos desde el directorio de WordPress.org: obtener listas de complementos, buscar actualizaciones, informar a los datos de uso del directorio, etc.
Para concluir sobre las babosas de complementos: cada vez que encuentre datos de complementos con la
slug
entrada, el 99% del tiempo se referirá a la babosa de WordPress.org del complemento.¿Cómo hacemos para identificar los complementos?
Si desea activar, actualizar, desactivar o eliminar mediante programación un determinado complemento en una instalación de WordPress, debe utilizar el archivo de complemento. Puede obtenerlo así desde el archivo principal de su complemento:
$plugin_file = plugin_basename( __FILE__ );
Si desea apuntar a un determinado complemento de otro complemento, las cosas se ponen un poco más complicadas ya que necesita confiar en un poco de "conjeturas".
Puede codificar el nombre del complemento, buscar el complemento en la lista de todos los complementos (consulte get_plugins () ) y obtener el archivo del complemento desde allí.
Si conoce una clase o función definida por ese complemento, podría usar la reflexión (consulte esta respuesta para las clases y esta para las funciones).
Espero que esto te ayude a ti y a otras personas que puedan tener dificultades para lidiar con las "babosas de plugins". Podría haberme ahorrado un par de horas :)
fuente
Solo para aclarar desde la publicación original.
La forma en que he encontrado el plugin slug es primero navegando a su carpeta de complementos, luego abriendo la carpeta asociada con el complemento y finalmente encontrando el archivo que contiene el siguiente código. Una vez que haya encontrado este archivo, el nombre del archivo menos la extensión debe ser su slug plugin.
Por ejemplo, si encontré el siguiente código en un archivo llamado advanced-plugin-awesomeness.php, mi slug sería advanced-plugin-awesomeness.
¡Espero que esto ayude!
fuente
Desafortunadamente, el slug se devuelve a través de la API de actualización, la respuesta a esta pregunta no es tan obvia a menos que consulte la API en sí. Sin embargo, si desea ver una lista de sus babosas de complementos actuales y datos de complementos relacionados, simplemente puede hacer:
Pero, esto no tendrá información sobre un complemento recién instalado por otras 12 horas, tendría que hacer algo diferente para ellos, por ejemplo. utilizar una versión modificada del código de
wp_update_plugins
enwp-includes/update.php
...Después de hacer esto para probarlo, parece confirmar que, independientemente del nombre de archivo o ubicación del complemento o en mayúscula, en realidad es el
Plugin Name
que genera el slug de actualización, muy probablemente a través desanitize_title
. Entonces creo que la respuesta correcta debería ser:fuente
Puede obtener el nombre de la carpeta del complemento (PHP5.3 +) pasando DIR a plugin_basename (), así:
fuente
Prueba esto:
fuente
Para la mayoría de los complementos, el "slug" será el mismo que el nombre del directorio. Aunque las personas .org pueden establecer el nombre del directorio a lo que quieran.
fuente