Ist wp-content / install.php ein Drop-In?

9

Ich kann keine Dokumentation oder Diskussion darüber finden, was Drop-In-Plugins sind und wie sie verwendet werden.
Die Frage wurde in dieser Frage und Antwort aufgeworfen: Inhalt bei Installation füllen .

Ist eine wp-content/install.phpDatei, die die steckbare Funktion neu definiert, wp_install_defaultsein Drop-In-Plugin oder nicht?

Meine Forschungsergebnisse

Die folgende Liste stammt aus dem Artikel von hakre (der der Ursprung aller anderen Kopien in den Interwebs zu sein scheint) .

File                Type of Plugin                          Loaded                          Context
advanced-cache.php  Advanced caching plugin.                on WP_CACHE value               Single
db.php              Custom database class                   always                          Single
db-error.php        Custom database error message           on error                        Single
install.php         Custom install script                   on install                      Single
maintenance.php     Custom maintenance message              on maintenance                  Single
object-cache.php    External object cache                   always                          Single
sunrise.php         Executed before Multisite is loaded     on SUNRISE value                Multi
blog-deleted.php    Custom blog deleted message             on deleted blog                 Multi
blog-inactive.php   Custom blog inactive message            on inactive blog                Multi
blog-suspended.php  Custom blog suspended message           on archived or spammed blog     Multi

Source: Data taken from global function _get_dropins() in wp-admin/includes/plugin.php.

Im Codex ist ein Drop-In definiert als :

Die konkrete PHP-Datei


Zunächst steht nichts auf der Liste der [wp-Hacker]. Und die Suche nach „Drop-in + Wordcamp“ Ich habe nur fanden diese von Relevanz mein Schwerpunkt :

Eine der großen Stärken von WordPress ist das Plugin-System. In der kommenden Version 2.1 gibt es sehr wenig, was Sie als Drop-In-Plugin nicht tun können . Dies macht es einfach, WordPress als CMS zu verwenden und Ihre Anpassungen von der Hauptcodeline zu trennen. Dies wiederum vereinfacht Upgrades und Wartung.

brasofilo
quelle
1
Ist es nicht nur Semantik? Da ich kein englischer Muttersprachler bin, sehe ich die implizite Unterscheidung zwischen "Drop-In-Plugin" und "Plugin" nicht
Mark Kaplun
@ MarkKaplun: Nein, nein, es geht nicht um Semantik. Die Frage ist im 3. Satz: Ist eine wp-content / install.php-Datei, die [...] neu definiert
brasofilo
Ich verstehe nicht, worauf du hinaus willst. Sie wissen, dass Drop-Ins bereits Dateien sind, die wie Mu-Plugins geladen werden, nur ohne Plugin-Header. Was ist offen?
Fuxia
@toscho, auf den Punkt: Wyck sagte, das wp-content/intall.phpsei kein Drop-In. Ich vertraute seinem Wissen und dachte, dass eine Frage nötig sei, um das zu klären. Wenn nicht, werde ich dies gerne löschen. Ich möchte kein anderes polemisches Thema erstellen.
Brasofilo
Das wäre eine bessere Frage: Ist install.phpein Drop-In?
Fuxia

Antworten:

9

Um Ihre Frage zu beantworten: Ja

Tatsächlich gibt es viele andere Funktionen, die Sie in dieser Datei überschreiben können. Sie ist in der ersten Zeile von "wp-admin / includes / upgrade.php" enthalten und es gibt viele Funktionen, die überschrieben werden müssen

Leider sind nicht allzu viele Informationen zu Drop-In-Plugins verfügbar, aber ich werde versuchen, ein paar Punkte zu nennen

  1. Sie unterscheiden sich von normalen Plugins in dem Sinne, dass sie nicht über WordPress Admin gepackt und installiert werden können.
  2. Wenn Sie sie verwenden, hat der Eigentümer das Plugin manuell an der richtigen Stelle hochgeladen. Es wird also davon ausgegangen, dass es vom Eigentümer selbst geschrieben und hinzugefügt wurde.
  3. Diese Plugins sollen nur Code enthalten, der für die jeweilige WordPress-Site spezifisch ist.
  4. Da sie vom Eigentümer hinzugefügt werden, können sie nicht über das Admin-Panel gesteuert (aktiviert / deaktiviert) werden. Die include-Anweisung ist im Kern fest codiert.
  5. Sie müssen keine Datei-Header haben.

Zusammenfassend sind es PHP-Dateien, die fest codiert sind, um aufgenommen zu werden (falls vorhanden), wenn die entsprechende Funktionalität von WordPress geladen wird.

Um sie zu verwenden, erstellen Sie einfach eine PHP-Datei mit diesem Namen im Verzeichnis "wp-content" und sie wird automatisch aufgenommen. Diese Datei kann natürlich nach Bedarf eine beliebige Anzahl anderer Dateien enthalten.

BEARBEITEN

Wie toscho hervorhob, werden
1) Drop-Ins (falls verfügbar) zusammen mit allen anderen Plugins auch im WordPress-Admin-Bereich aufgelistet. Im Gegensatz zu anderen Plugins haben Sie nicht die Möglichkeit, sie von dort aus zu deaktivieren.
2) Wordpress ändert beim Upgrade selbst (Core-Upgrade) das Verzeichnis "wp-content" nicht. Aus diesem Grund ändern sich diese Plugins zwischen den Upgrades nie.
3) Sie können eine Konstante definieren wp-config.php, um das Verzeichnis "wp-content" in ein anderes zu ändern. Die Konstante, die Sie definieren müssen, ist WP_CONTENT_DIR. Dadurch werden auch die Standardeinstellungen für andere Konstanten wie das Plugins-Verzeichnis geändert, sodass Sie sich bei Bedarf auch darum kümmern müssen

Mridul Aggarwal
quelle
2
Sie können hinzufügen, dass sie ein WordPress-Update überleben, auf der Plugin-Administrationsseite aufgeführt sind und Sie zusätzliche Drop-In-Pfade in definieren können wp-config.php.
Fuxia
Schöne Zusammenfassung, Mridul. Ich habe gerade den Kern durchsucht und ja, Sie übersetzen fast ins Englische, was der Code sagt.
Brasofilo
1

Wie wp-content/install.phpfunktioniert;

Der WP-Installationsprozess wird ausgeführt wp-admin/install.php

In Zeile 39 der Installation wird es ausgeführt wp-admin/includes/upgrade.php

require_once( dirname( __FILE__ ) . '/includes/upgrade.php' );

Diese Datei sucht dann zuerst nach einer vom Benutzer generierten Datei install.php. Wenn sie nicht gefunden wird, wird die Standardinstallation ausgeführt, wie in diesem Code dargestellt.

( file_exists(WP_CONTENT_DIR . '/install.php') )
    require (WP_CONTENT_DIR . '/install.php');
Wyck
quelle
Inwiefern wirkt sich dieser Workflow darauf aus, dass wir install.phpein Drop-In sind oder nicht?
Brasofilo
Es ist immer noch ein "Drop-In". Ich wollte nur eine Unterscheidung treffen mit einem, den mu-pluginich oben kommentiert habe. Entschuldigen Sie die Verwirrung. Ich denke, Mridul Aggarwal ist richtig.
Wyck
Kein Problem, ich war wirklich verwirrt. Wenn das System jedoch Must-use einer Art und Drop-in einer anderen Art aufruft, sollten wir uns an die Konvention halten. Prost :)
brasofilo
Ja, die Namenskonventionen sollten klarer sein, aber auch die meisten Leute wissen nichts über den Brauchinstall.php
Wyck