web-dev-qa-db-de.com

So passen Sie ein Plugin an, ohne die Upgrade-Fähigkeit zu beeinträchtigen

Ich arbeite derzeit an einem wichtigen Update für eines meiner WordPress-Plugins.

Mit dem Plugin kann der Benutzer aus mehreren verfügbaren Skins auswählen. Sehr oft werde ich gebeten, einen eigenen Skin zu erstellen. Um zu verhindern, dass diese Skin beim Upgrade gelöscht wird, muss ich einen WordPress-Hook verwenden, um automatische Updates für das Plugin zu deaktivieren. Dies ist offensichtlich nicht ideal, da ich möchte, dass sie das Plugin trotzdem aktualisieren können. Das Problem ist, wie WordPress mit Updates umgeht - es löscht einfach den Plugin-Ordner und installiert die neue Version. So werden Dateien entfernt, die eigentlich nicht Teil der alten Version waren.

Derzeit kann ich nur mit zwei Skins-Ordnern umgehen - einem im Plugin-Ordner und einem im Upload-Ordner. Kann ich meinen Benutzern dies wirklich nur auf diese Weise anbieten?

8

Viele Plugins verwenden /wp-content/custom-plugin-folder/, um benutzerdefinierte Plugin-Daten zu speichern (ich denke an WPTouch).

Verwenden Sie einfach die Konstanten WP_CONTENT_URL und WP_CONTENT_DIR Text & Tabellen um die Existenz Ihres Ordners zu überprüfen und verfügbare Skins abzurufen.

Der folgende Artikel, obwohl nicht direkt mit dieser Frage verbunden, erklärt, wie wichtig es ist, dass Plugins/Themes nach Übersetzungen suchen zuerstim Ordner wp-content/languages vorLaden seiner eigenen gepackten .mo Dateien. Es ist eine Lektüre wert und hoffentlich werden Sie das Konzept in Ihrer nächsten Version anwenden :)

WordPress-Sprachdateien richtig laden
http://www.geertdedeckere.be/
Ich möchte darauf hinweisen, dass es wichtig ist, benutzerdefinierte Benutzersprachdateien aus WP_LANG_DIR zu laden, bevor Sie die mit dem Plugingelieferten Sprachdateien laden. Wenn mehrere Mo-Dateien für dieselbe Domain geladen werden, wird die zuerst gefundene Übersetzung verwendet. Auf diese Weise dienen die vom Plugin bereitgestellten Sprachdateien als Ersatz für Zeichenfolgen, die nicht vom Benutzer übersetzt wurden.

4
brasofilo

Die andere Möglichkeit besteht darin, dass Benutzer ihr eigenes Sub-Plugin hinzufügen. Der Code in Ihrem Kern-Plugin, der die Skins abruft, könnte beispielsweise so aussehen:

function get_available_skins() {
    $skins[] = '/includes/default-skin.css';
    $skins[] = '/includes/2012-skin.css';

    return apply_filters( 'get_available_skins', $skins );
}

Anschließend können Benutzer ein benutzerdefiniertes Plugin erstellen, das sich neben Ihrem befindet (separat aktiviert, damit es Ihr Update nicht beeinträchtigt).

add_filter( 'get_available_skins', 'my_custom_skin' );
function my_custom_skin( $skins ) {
    $skins[] = '/my-custom-skin.css';

    return $skins;
}

Dies ist genau die gleiche Art und Weise, wie WordPress Hooks verwendet, um sich selbst erweiterbar zu machen. Das Rad nicht neu erfinden.

(Natürlich weiß ich nicht, mit welchem ​​Plugin Sie arbeiten, wie eine benutzerdefinierte Skin aussieht oder wie Sie die Dinge codiert haben. Daher müssen Sie nur den obigen Code verwenden als Modell dafür, wie Sie Ihren eigenen Code umgestalten können.)

7
EAMann