Quotes Collection optimieren

ZufallszitatIch verwende seit kurzem das WordPress-Plugin Quotes Collection zum Anzeigen von Zufallszitaten. Das Plugin ist auf den ersten Blick gut geschrieben und bietet relativ genau das, was ich brauche. Auf den zweiten Blick bietet es allerdings wesentlich mehr als ich brauche, und die entsprechenden Sachen habe ich nun mal wegoptimiert.

Alle folgenden Code-Beispiele kommen in euer Funktions-Plugin oder zur Not in die functions.php des Themes (wo es aber eher nicht hingehört, da es sich nicht um Theme-Anpassungen handelt):

// remove quote collection's CSS and JS
add_action('init', 'abc_remove_quotescollection_stuff', 12);

/**
 * Removes Quote Collection's Javascript and CSS files as they are not
 * needed. Also some of the hooks and filters of the plugin.
 */
function abc_remove_quotescollection_stuff() {
  // remove stuff here
}

Die ‚12′ ist wichtig, damit diese Funktion nach den Funktionen des Plugins läuft. Andernfalls kann ja nichts entfernt werden.

Bevor ich zu Details komme eine Bitte: Versteht bitte wirklich, was die folgenden Code-Zeilen tun! Es wird hiermit absichtlich ein Teil der Funktionalität des Plugins ausgeschaltet. Bitte also nicht einfach blind kopieren und sich dann wundern, warum einiges nicht mehr geht. 🙂

wp_dequeue_script('quotescollection');

Ich nutze von „Quotes Collection“ ausschließlich das Widget, und zwar ohne den Link, mit dem man sich per AJAX durch die Zitate durchklicken kann. Für diese AJAX-Aufrufe bindet das Plugin JavaScript-Code im Seitenheader ein, den ich aber gar nicht brauche. Das Plugin bindet den Code übrigens auf allen Seiten ein, ungeachtet der im Widget gewählten Optionen, da der gleiche AJAX-Link auch an Zitaten stehen kann, die man per Shortcode oder Template-Funktion eingebaut hat. Das Plugin weiß also nicht, ob der Link vielleicht irgendwo auf der Seite steht, deshalb gibt es immer den JavaScript-Code aus.

remove_action('wp_head', 'quotescollection_css_head');

Das Plugin bindet auch auf allen Seiten ein Stylesheet ein, das aber nur wenige Zeilen lang ist. Da man ja möglichst wenige CSS-Dateien referenzieren soll, um die Zahl der HTTP-Requests klein zu halten, habe ich dieses Stylesheet ebenfalls entfernt und die wichtigen Zeilen ins Stylesheet meines Themes übernommen.

remove_filter('the_content', 'quotescollection_inpost', 7);
remove_filter('the_excerpt', 'quotescollection_inpost', 7);

Diese beiden Zeilen entfernen eine Shortcode-ähnliche Funktion (wieso ist das nicht als Shortcode umgesetzt?!), welche einen Shortcode in Beiträgen und Auszügen durch ein oder mehrere Zitate ersetzt. Da ich das nicht verwende kann ich mir die Regular Expressions sparen, die bei jedem Aufruf jeden Beitrags ausgeführt werden.

remove_shortcode('quotescollection', 'quotescollection_shortcodes');
remove_shortcode('quotcoll', 'quotescollection_shortcodes');
remove_shortcode('quotecoll', 'quotescollection_shortcodes');

Und schlußendlich hat das Plugin auch noch einige echte Shortcodes an Bord, über die man Zitate in Beiträge oder Seiten einbetten kann. Auch dies hat eine Regular Expression pro Shortcode und Beitrag zur Folge, die ich mir sparen kann.

So, und damit ist das Plugin gleich wesentlich schlanker und verbraucht ein klein wenig weniger Ressourcen. Das Widget im Footer der Seite funktioniert natürlich weiter wie gewünscht, genau wie das Backend.

Update Jan 2019: Nach einigen Updates des „Quotes Collections“-Plugins funktioniert obiges Code nicht mehr. Ich habe eine Weile herumprobiert, konnte das mit dem aktuellen Plugin-Codestand aber nicht mehr zum Laufen kriegen. Mit den zusätzlichen CSS- und JS-Dateien muss ich wohl fürs erste leben.

Schreibe einen Kommentar

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

Bitte beachte die Kommentarregeln: 1) Kein Spam, und bitte höflich bleiben. 2) Ins Namensfeld gehört ein Name. Gerne ein Pseudonym, aber bitte keine Keywords. 3) Keine kommerziellen Links, außer es hat Bezug zum Beitrag. mehr Details...

So, noch mal kurz drüber schauen und dann nichts wie ab damit. Vielen Dank fürs Kommentieren! :-)