Wordpress Plugins automatisch installieren

Heute zeige ich dir wie du häufe benutzte Wordpress Plugins automatisch installieren kannst und somit beim Erstellen mehrerer Seiten viel Zeit sparst. 

Da ich in meinem Arbeitsalltag häufig neue Wordpress-Installationen aufsetzen muss, habe ich nach einer Möglichkeit gesucht, oft verwendete Plugins automatisch in einem Rutsch zu installieren. Mein Ziel dabei war es, ein Standard Plugin zu entwerfen und die anderen Erweiterungen als Abhängigkeiten zu definieren. Dabei sollte auf das Wordpress Repository zugegriffen werden, damit ich immer die aktuellste Version des Plugins installiere. 

Wie programmiere ich ein Wordpress Plugin?

Ein kleines Wordpress Plugin mit Basisfunktionen zu erstellen ist sehr einfach. Zumindest wenn du es nicht offiziell im Repository anbieten möchtest. In der Regel genügt dazu ein Verzeichnis mit einer Datei. Erstmal solltest du dir einen Namen für das Plugin ausdenken. Da ich oft in meinem Namen arbeite, habe ich mich für den Namen "Greyboard Plugin Installer" entschieden. Wir du das Plugin und die Datei später benennst ist natürlich deine Sache, ich verwende in diesem Wordpress Plugin Tutorial den oben genannten.

Du erstellt ein Verzeichnis und darin eine PHP Datei mit dem Namen greyboard-plugin-installer.php.

In diese Datei muss der Plugin Header eingefügt werden, damit Wordpress überhaupt damit etwas anfangen kann. In dem Header kommt unter anderem der Name des Autors, Name des Plugins und die Webseite oder auch die Lizenz für das Plugin. Da ich ein Freund von OpenSource bin, verwende ich oft die GPL v3.

So sieht die Datei greyboard-plugin-installer.php dann aus:


/*
Plugin Name: Greyboard Plugin Installer
Plugin URI:  https://www.greyboard.net/tutorials/wordpress-plugins-automatisch-installieren/
Description: Installiert ständig benötigten Plugins
Version:     0.1
Author:      Ivo Engelhardt (Greyboard)
Author URI:  https://www.greyboard.net
License:     GPL3
License URI: https://www.gnu.org/licenses/gpl-3.0.en.html
/*

Dabei sollte du in der ersten Zeile nicht das "<?php" vergessen, sonst funktioniert es nicht.

Wie du siehst besteht der Header aus Kommentaren und ist recht einfach aufgebaut. Trotzdem erkläre ich dir die einzelnen Zeilen des Wordpress Plugin Headers:

Plugin Name: -> Der Name für dein neues Plugin
Plugin URI: -> Eine URL mit der Beschreibung des Plugins
Description: -> Kurze Beschreibung was das Plugin macht, diese wird im Wordpress angezeigt
Version: -> die Version des Plugins
Author: -> Dein Name oder den Namen deiner Firma
Author URI: -> URL zu deiner Firma
License: -> Die verwendete Lizenz
License URI: -> Link zur Lizenz

Darunter setzte du dann am besten noch den GPL Header, falls du diese Lizenz verwendet möchtest.


/* Copyright 2018 Ivo Engelhardt (email : engelhardt@greyboard.net)
(Greyboard Plugin Installer) is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
any later version.

Greyboard Plugin Installer is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with (Greyboard Plugin Installer. If not, see (https://www.gnu.org/licenses/gpl-3.0.en.html).
*/

Funktion für automatische Installation der Plugins

Nun geht es ans eingemachte! Da wir nicht das Rad neu erfinden möchten und es eine hervorragende OpenSource Bibliothek für diesen Zweck gibt, nutzen wir natürlich eine freie und funktionieren Funktion um Wordpress Plugins automatisch zu installieren

Diese nennt sich TGM Plugin Activation und du findest diese auf Github. Im Grunde benötigst du nur eine einzige Datei aus dem Projekt und das ist die class-tgm-plugin-activation.php. Diese wird einfach im Verzeichnis deines Plugins gespeichert und eingebunden. Ein Blick auf die ebenfalls vorhandene example.php schadet aber auf keinen Fall. Dort sind erweiterte Funktionen dokumentiert, die du vielleicht in Zukunft für die Installation von Premium Plugin verwenden kannst. 

Binden wir nun alle benötigten Dateien ein und erstellen das Grundgerüst der Datei greyboard-plugin-installer.php


include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
require_once dirname( __FILE__ ) . '/class-tgm-plugin-activation.php';

add_action( 'tgmpa_register', 'auto_install_plugin_register_required_plugins' );

function auto_install_plugin_register_required_plugins() {

  $plugins = array(
    array(
      'name'      => 'YoastSeo',
      'slug'      => 'wordpress-seo',
      'required'  => true,
    ),
    array(
      'name'      => 'Maintenance',
      'slug'      => 'maintenance',
      'required'  => true,
    ),
    array(
      'name'      => 'WP Mail SMTP by WPForms',
      'slug'      => 'wp-mail-smtp',
      'required'  => true,
    ),
  );

Weitere Einstellungen und Änderungen kannst du auch direkt in der Klasse vornehmen, zum Beispiel wenn du einen anderen Standardtext auf der Pluginseite haben möchtest. In der Regel ist dies aber nicht notwendig und nach dem komprimieren des Verzeichnisses als ZIP, kannst du das Plugin ganz normal hochladen. 

Wie du siehst, werden bei mir drei Plugins installiert. Yoast SEO, Maintenance und WP Mail SMTP. Du kannst aber beliebig viele Plugins mit Hilfe der Arrays einbinden. Jedes Array steht dabei für ein Plugin und es kann definiert werden ob das Plugin erforderlich oder empfohlen ist.

Dabei gibt du einfach den Namen an und welchem das Plugin im Wordpress Plugin Repository zu finden ist. Den Slug findest Du auf der Wordpress Plugin Webseite, dazu am besten einfach nach dem Plugin suchen und den letzten Teil der URL kopieren und einfügen. Zuletzt wird noch definiert ob das Plugin erforderlich oder empfohlen ist, True oder False...

Nun folgt noch die Standardkonfiguration der Klasse und du kannst es schon fast benutzen.


  $config = array(
    'id'           => 'auto-install-plugin',   // Unique ID for hashing notices for multiple instances of TGMPA.
    'default_path' => '',                      // Default absolute path to bundled plugins.
    'menu'         => 'tgmpa-install-plugins', // Menu slug.
    'parent_slug'  => 'plugins.php',           // Parent menu slug.
    'capability'   => 'manage_options',        // Capability needed to view plugin install page, should be a capability associated with the parent menu used.
    'has_notices'  => true,                    // Show admin notices or not.
    'dismissable'  => true,                    // If false, a user cannot dismiss the nag message.
    'dismiss_msg'  => '',                      // If 'dismissable' is false, this message will be output at top of nag.
    'is_automatic' => true,                    // Automatically activate plugins after installation or not.
    'message'      => '',                      // Message to output right before the plugins table.
  );

  tgmpa( $plugins, $config );

Wie du siehst ist das alles nicht sonderlich kompliziert und mit etwa Arbeit kann man sich in Zukunft die Installation von Wordpress Plugins automatisieren. Wenn Du Fragen, Vorschläge oder konstruktive Kritik hast, kannst du mir gerne eine Email senden. Das fertige Beispiel Plugin kannst Du hier direkt herunterladen: Greyboard Plugin Installer

Oder hast du Interesse an einem speziell angepasstes Wordpress Plugin? Dann nimm noch heute Kontakt zu mir auf!