WordPress Plugins von Updates ausschliessen

Ich nutzte seit geraumer Zeit das Plugin „a year before“, um Artikel anzeigen zu lassen, die ich vor x-Jahren hier auf diesem Blog veröffentlicht habe. Ich „muss“ aber die Version 1.0.0 verwenden, da die aktuelle Version sich nicht mehr mit meinem eingesetzten WordPress-Theme „Twenty Seventeen“ verträgt – da zerschiesst es mir das CSS und das schaut nicht wirklich gut dann aus.

Im Footer-Bereich meiner Webseite ist in der rechten Spalte ein „Rückblick“ zu sehen, der Artikel anzeigt, die am heutigen Tag vor x Jahren hier veröffentlicht wurden.

Nun hat es mich irgendwann genervt, dass mit das WordPress-Backend jeden Tag angezeigt hat, das es für dieses besagte Plugin doch ein Update gäbe und somit habe ich mich auf die Suche begeben, wie ich den diesen Hinweis weg bekommen könnte.

Fündig geworden von ich auf dieser Webseite, wo beschrieben wird, wie man mittels einem PHP Code-Schnipsel einzelne Plugins von dem Update-Zyklus ausklammern kann.

Der Code ist ziemlich kompakt und die Idee ist simple. WordPress checkt gelegentlich die installierten Plugins nach Update und fragt dabei im WordPress.org Repository nach. Das Plugin nutzt diesen HTTP Request aus. Dabei wird der Filter-Hook http_request_args verwendet. Jeder HTTP Request, den WordPress absetzt, läuft über diesen Filter. Dabei wird als erstes geprüft, ob es sich um einen Update Check handelt. Wenn das der Fall ist, werden die Plugins aus der Liste gestrichen für die keine Updates gesucht werden sollen.

Quelle: https://webschale.de/2016/plugins-von-updates-ausschliessen/

Im Grunde ist die Verwendung sehr einfach, wenn man mal kapiert hat, was man machen soll. Ich versuch das hier mal in einfachen und kurzen Worten zu erklären.

  1. Man nimmt nachstehenden Code und kopiert ihn in eine Text-Datei.
<?php
/*
 * Plugin Name:     Lock plugin updates
 * Description:     Prevent plugin updates
 * Version:         1.0.0
 * Author:          daggerhart
 */
add_filter( 'http_request_args', 'lock_plugins_http_request_args', 5, 2 );
/**
 * Prevent lookup of certain plugin updates
 * Source: https://markjaquith.wordpress.com/2009/12/14/excluding-your-plugin-or-theme-from-update-checks/
 *
 * @param $request
 * @param $url
 *
 * @return mixed
 */
function lock_plugins_http_request_args( $request, $url ) {
    if ( FALSE === strpos( $url, '//api.wordpress.org/plugins/update-check' ) ) {
        return $request; // Not a plugin update request. Bail immediately.
    }
    if ( empty($request['body']['plugins']) ){
        return $request;
    }
    $plugins = json_decode( $request['body']['plugins'], true );
    // get a list of locked plugins from somewhere
    $locked_plugins = apply_filters('lock_plugins-locked_plugins', array());
    foreach( $locked_plugins as $locked_plugin_basename )
    {
        $active_index = array_search( $locked_plugin_basename, $plugins['active'] );
        unset( $plugins['active'][ $active_index ] );
        unset( $plugins['plugins'][ $locked_plugin_basename ] );
    }
    $request['body']['plugins'] = wp_json_encode( $plugins );
    return $request;
}

2. Die folgendenden Zeilen kopiert man ebenfalls und fügt sie am einfachsten der Datei an, die man soeben mit dem obigen Code angefangen/erstellt hat.

add_filter('lock_plugins-locked_plugins', function($plugins){
  $plugins[] = 'a-year-before/ayb_posts.php';

  return $plugins;
});

Hier in meinen Beispiel steht bereits in der zweiten Zeile der Pfad zu dem besagten Plugin (a-year-before) drinnen, welchen ich einfach mittels eines FTP-Clients mir gesucht habe.

3. Diese (reine) Textdatei speichert man nun lokal (zum Beispiel auf dem Desktop) ab – ich habe z.B. den Namen „lock-plugin.php“ verwendet – und überträgt diese Datei per FTP auf seinen Webserver in der WordPress-Plugin-Verzeichnis.
(wp-content/plugins/).

4. Nun muss man nur noch im WordPress-Backend unter den „installierten Plugins“ dieses aktivieren und schon sollten keine Updates mehr für die oben eingetragenen Plugins mehr abgerufen und angezeigt werden.

Anmerkung:
Bei mir war es so, dass trotz aktiviertem „Lock Plugin Updates“-Plugin mir angezeigt wurde, dass es für das „a year before“-Plugin ein Update gäbe. Ich vermute mal, dass lag daran, dass dieser Hinweis bereits vorhanden war, bevor ich das Lock-Plugin aktiviert habe.
Ich habe dann zu diesem Zweck das „a year before“-Plugin kurzer habe gelöscht und die Version 1.0.0 einfach per FTP wieder hochgeladen. Und seither ist dieses Update-Hinweis nun auch bei mir verschwunden.

Markus Ostermeier
Markus Ostermeier
Contact: markus(at)ostermeier(dot)net - My Coffee is always #000000! - Base-Station: GPS 48.749878 11.975666, Code Plus 8FWHPXXF+XQ - It all started with a Commodore 64...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.