Freaky Friday: WordPress Shortcode Funktionen überschreiben

Freitag! Wieder Zeit für einen Artikel aus der Rubrik Freaky Friday. In diesen Artikeln erkläre ich kurz kleine Tipps und Tricks aus der Webentwicklung. Heute soll es um WordPress gehen. Diese Woche habe ich für Max von RP07 ein gekauftes WordPress Theme angepasst. Anpassungen für ein gekauftes Theme sollten grundsätzlich in einem Childtheme durchgeführt werden. Somit bleibt das gekaufte Theme Update-fähig. Gute Anbieter bieten von Zeit zu Zeit nämlich Updates ihrer Themes an, die Schwachstellen beheben oder Neuerungen bieten. Arbeitet man direkt im Theme und nicht in einem Childtheme, werden die Änderungen mit einem Update überschrieben und gehen verloren. Aus diesem Grund empfehle ich immer Childthemes.

Also, lange Rede kurzer Sinn, wurde die Shortcode Funktion in der functions.php des Childthemes überschrieben. Wie das geht möchte ich an folgendem Code Beispiel zeigen. Angenommen wir haben einen List Shortcode im Theme. Dieser List Shortcode hat bereits ein Type Attribut, mit dem es möglich ist das Design der Liste zu wählen. Wir möchten den Shortcode nun um ein Position Attribut erweitern, um festlegen zu können, ob die Listenelemente innerhalb oder außerhalb der Liste dargestellt werden sollen. Folgendes könnte dann in der functions.php des Childthemes stehen.

 

functions.php
1
2
3
4
5
6
7
8
9
10
11
12
add_action( 'after_setup_theme', 'mychildchild_theme_setup' );
function mychild_theme_setup() {
    remove_shortcode( 'list' );
    add_shortcode( 'list', 'mychild_purelist' );
}
function mychild_purelist( $atts, $content = null ) {
    extract(shortcode_atts(array(
        'type' => '',
    	'position' => '',
        ), $atts));
    return '<div class="' . $type . ' ' . $position . '">' . $content . '</div>';
}

Zur Erklärung: Mit dem WordPress Hook after_setup_theme führen wir die Funktion mychild_theme_setup aus. Diese Funktion entfernt den List Shortcode mit der WordPress Funktion remove_shortcode, um dann mit der add_shortcode Funktion unseren eigenen List Shortcode hinzuzufügen. Hierfür gibt es dann die eigens geschriebene mychild_purelist Funktion, die im Grunde genommen eine Kopie der Funktion aus dem originalem Theme ist und lediglich das Position Attribut mit aufführt. Mit diesem Attribut wird eine zweite CSS Klasse mit in das Markup aufgenommen, welche dafür sorgt, dass der Content auch so formatiert wird, wie wir das auch wollen.

So einfach geht also das Überschreiben von Shortcodes aus dem Eltern Theme. Haben wir wieder was gelernt.
Ich wünsche Euch ein schönes Wochenende!

Bildquelle: gounder / CCO Public Domain

About Author: Marcel
Ich bin Senior PHP Developer bei MM Newmedia. Seit 2005 bin ich begeisterter Webentwickler und arbeite als Freelancer für namenhafte Firmen und entwickle jede Menge abgefahrenes Zeug und berichte darüber in meinem Blog.

2 thoughts on “Freaky Friday: WordPress Shortcode Funktionen überschreiben

  • Noch leichter geht es mit Hasty (https://www.wp-hasty.com/) oder mit generateWP (https://generatewp.com/).

    • Soweit ich die Generatoren jetzt überblicke, generieren diese recht simplen Code. Das ist natürlich praktisch, sofern man sein eigenes Theme selbst erstellen oder erweitern möchte. Für Childthemes bieten diese Generatoren aber nur begrenzt Lösungen. Das Erweitern von bereits vorhandenen Funktionen wird von den Generatoren nicht abgedeckt. Somit können diese Generatoren nur eine Hilfestellung beim Erweitern von Themes in Form eines Child Themes sein. Fraglich ist auch, inwieweit aktuelle WordPress Versionen von den Generatoren berücksichtigt werden? Wenn ich schon lese, dass man den Visual Composer unterstützt, stellen sich mir die Nackenhaare auf.

Antworten auf Marcel Antwort abbrechen