Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03307.jsonl.gz/890

Heute ein kurzer Beitrag, der besonders für WordPress-Entwickler interessant sein kann. Wer die Funktionalität von WordPress an die eigenen Anforderungen anpassen möchte, ohne dabei auf gängige Plugins zurückzugreifen, schreibt seinen Code üblicherweise direkt in den php-Dateien des eigenen Child Themes. Hier können wir auch auf Variablen zugreifen, welche von WordPress oder insbesondere von Plugins oder Themes gesetzt werden. Beispielsweise könnte ein SEO-Plugin die Variable $description für die Meta Description definieren, welche dann in einem der Templates ausgegeben werden kann. In unserem Fall wurde das Plugin Post Attached Media Downloads genutzt, um PDF-Dokumente in bestimmten Posts als Download verfügbar zu machen. Um diese im Frontend auszugeben kann laut der Beschreibung des Plugins folgender Code genutzt werden:
$pamd->get_downloads( $postID, $echo, $return_format, $target )
Dies funktioniert auch in den normalen Templatedateien wie z.B. der single.php unseres Themes. Sobald der Code aber in ein Template-Part verschoben wurde, welches dann über get_template_part() in die single.php integriert wurde, blieb die Ausgabe im Frontend leer. Eine kurze Recherche zeigte, dass dieses Problem auch im Supportforum des Plugins selbst schon angesprochen wurde, allerdings blieb der Thread dort unbeantwortet.
Variablen über include(locate_template()) verfügbar machen
Auf die Lösung des Problems bin ich auf dem Blog von Keith Devon gestossen. Wie oben geschrieben, werden die meisten Template-Parts über die WordPress-Funktion get_template_part() eingebunden. Um in diesen aber auf Variablen zugreifen zu können, muss eine andere Funktion genutzt werden:
include(locate_template('pfad/zum/template-part.php'));
Dadurch können alle Variablen, welche dem Template zur Verfügung stehen, auch im Template-Part genutzt werden. In unserem Beispiel ist nun die Variable $pamd verfügbar, und unsere PDF-Downloads werden wie gewünscht angezeigt.
Wir hoffen, dieses kurze Beispiel konnte den Sachverhalt erklären und hilft anderen Entwicklern, schneller zur Lösung ihres Problems zu kommen. Happy coding 🙂