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 :)