Template-Funktionen
Diese Funktionen sind dafür gedacht, aus Templates, Template-Parts und
Child-Themes aufgerufen zu werden.
Erst prüfen, dann aufrufen
Viele Funktionen kommen aus einem Modul. Ist das Modul abgeschaltet, wird die
Datei gar nicht geladen und ein ungeprüfter Aufruf ist ein Fatal Error.
if (function_exists('twtheme_breadcrumb')) {
echo twtheme_breadcrumb();
}
Für sechs häufig genutzte Funktionen gibt es einen Stub in
includes/template-fallbacks.php. Diese sind immer aufrufbar, tun aber nichts
Sinnvolles, wenn das Modul fehlt:
| Funktion |
Verhalten ohne Modul |
Modul |
twtheme_toc() |
gibt den Inhalt unverändert zurück |
toc |
twtheme_hyperlink() |
gibt die URL zurück |
hyperlinks |
twtheme_hyperlink_scan() |
gibt den Inhalt unverändert zurück |
hyperlinks |
twtheme_content_blocker() |
gibt den Inhalt unverändert zurück |
cookiebot, content-blocker |
twtheme_get_cookie_names() |
gibt ein leeres Array zurück |
cookiebot |
twtheme_ad() |
gibt einen leeren String zurück |
adsense |
Alle anderen brauchen die Prüfung mit function_exists().
| Funktion |
Rückgabe |
twtheme_get_header($header_name = '', $args = []) |
gibt direkt aus |
twtheme_get_footer($footer_name = '', $args = '') |
gibt direkt aus |
Sie verhalten sich wie get_header() und get_footer(), berücksichtigen aber den
Wartungsmodus: Ist er aktiv und sind eigene Wartungs-Templates eingestellt, wird
header-maintenance beziehungsweise footer-maintenance geladen.
| Funktion |
Rückgabe |
Zweck |
twtheme_get_content($content) |
string | null |
Wendet Shortcodes und die Link-Verarbeitung auf einen Inhalt an. |
twtheme_excerpt($post_id, $content = '', $args = []) |
string |
Gekürzter Text, optional mit Weiterlesen-Link oder Modal. |
twtheme_excerpt_details_more($content, $extended_content, $modal_title, $id) |
string |
Klappt den vollständigen Text in ein <details>-Element. |
twtheme_highlight_search_keywords($content) |
string |
Hebt die aktuellen Suchbegriffe im Inhalt hervor. |
twtheme_count_content_words($content) |
int |
Zählt Wörter und ignoriert HTML und Shortcodes. |
twtheme_post_reading_time($content) |
int |
Lesezeit in Minuten. |
twtheme_date_as_text($date) |
string |
Datum relativ ausgeben. Modul date-as-text. |
remove_empty_p($content) |
string |
Entfernt leere <p>-Elemente. |
twtheme_outputter($functions, $value) |
mixed |
Wendet mehrere Ausgabefilter nacheinander an. |
Links
| Funktion |
Rückgabe |
Zweck |
twtheme_hyperlink($url = '', $title = '', $atts = [], $args = []) |
string |
Link mit den Regeln des Hyperlink-Moduls. |
twtheme_hyperlink_scan($content = '', $args = []) |
string |
Verarbeitet alle Links in einem HTML-Fragment. |
twtheme_hyperlink_matches_id_or_class_selector($attributes, $selector) |
bool |
Prüft Link-Attribute gegen einen Selektor. |
twtheme_brand_url() |
string |
URL der Marke. |
Navigation und Orientierung
| Funktion |
Rückgabe |
Modul |
twtheme_breadcrumb($items = [], $args = []) |
string |
breadcrumb |
twtheme_toc($content, $args = []) |
string | array |
toc |
twtheme_render_header_quick_nav() |
string |
Kern |
twtheme_render_language_switcher($variant = 'compact') |
string |
Polylang |
twtheme_skip_links() |
gibt direkt aus |
accessibility |
Eigene Einträge im Brotkrumen-Pfad:
$items = [
['name' => 'Produkte', 'url' => '/produkte/'],
['name' => 'Kategorie', 'url' => '/produkte/kategorie/'],
['name' => 'Produktname', 'url' => ''],
];
echo twtheme_breadcrumb($items, [
'divider' => '/',
'show_homepage' => false,
]);
Nachladen von Inhalten
| Funktion |
Rückgabe |
Zweck |
twtheme_dynamic_content($key = '', $html = '', $script = '', $loading = 'lazy', $attr = '', $inner_prefix = '', $context = []) |
string |
Platzhalter, dessen Inhalt später per AJAX kommt. |
twtheme_dynamic_content_render_immediate($html, $scripts = []) |
string |
Gibt denselben Inhalt sofort aus, ohne AJAX. |
Ausführlich unter Dynamic Content.
Autoren und Beiträge
| Funktion |
Rückgabe |
Zweck |
twtheme_get_author_for_post($post_id = 0) |
array |
Autoren eines Beitrags. |
twtheme_render_author_portrait_for_post($post_id, $image_size = 'medium', $extra_class = '') |
string |
Portrait des Autors. |
twtheme_render_post_author_markup($attributes, $context = []) |
string |
Markup des Autor-Blocks. |
twtheme_get_posts($post_type_name = 'page', $args = []) |
array |
Beiträge als Liste aus Wert und Beschriftung. |
twtheme_posts_by_taxonomy($taxonomy, $args = [], $term_args = [], $sort = []) |
array | null |
Beitrags-IDs, nach Termname und dann nach einem Beitragsfeld sortiert. |
Details zur letzten Funktion unter
Posts by Taxonomy.
Templates und Template-Parts
| Funktion |
Rückgabe |
Zweck |
twtheme_block_template_part_exists($slug) |
bool |
Prüft, ob ein Block-Template-Part vorhanden ist. |
twtheme_render_block_template_part($slug, $tag_name = '') |
gibt direkt aus |
Rendert einen Block-Template-Part. |
twtheme_find_addon_template($template_filename) |
string |
Sucht ein Template in den Modulordnern. |
twtheme_page_template($single_template) |
string |
Überschreibt das Seiten-Template. |
Ausgabe-Bausteine
| Funktion |
Rückgabe |
Zweck |
twtheme_inline_icon($name, $style = 'regular', $class = '') |
string |
Inline-SVG. Funktioniert auch ohne Icon-Modul. |
twtheme_spinner() |
string |
Ladeanzeige. |
twtheme_loading_overlay_html($background_color = null) |
string |
Overlay während des Ladens. |
twtheme_pagination($link, $args) |
string |
Formatiert Paginierungs-Links. Hängt am Filter twtheme_paginate_link. |
twtheme_brand_icon() |
string |
Marken-Icon als eingebettetes SVG. |
twtheme_brand_title($title) |
string |
Markenlogo mit Titel. |
Medien
| Funktion |
Rückgabe |
Zweck |
twtheme_media($args = []) |
string |
iframe mit Lazy-Load und optionalem Consent-Wrapper. |
twtheme_preload_image($image_id, $image_url = '', $image_srcset = '', $image_sizes = '') |
string |
<link rel="preload"> für ein Bild. Modul pagespeed. |
twtheme_preload_fonts() |
gibt direkt aus |
Preload-Verweise für Schriften. Modul pagespeed. |
twtheme_attr_get($tag, $attr) |
string |
Liest ein Attribut aus einem HTML-Tag. |
twtheme_attr_set($tag, $attr, $value) |
string |
Setzt ein Attribut in einem HTML-Tag. |
twtheme_image_sizes_for_media($size_names) |
array |
Gibt Bildgrößen in der Mediathek frei. |
Benutzer und Rollen
| Funktion |
Rückgabe |
twtheme_get_user_role() |
string |
twtheme_get_user_roles() |
array |
twtheme_user_has_role($role_name, $user_id = '') |
bool |
twtheme_user_is_admin($user_id = '') |
bool |
twtheme_get_user_meta($user_id = '') |
array |
twtheme_get_username($user_id = '') |
string |
Geräteerkennung
| Funktion |
Rückgabe |
get_device() |
array |
is_mobile() |
bool |
is_tablet() |
bool |
is_desktop() |
bool |
Diese vier werten den User-Agent aus. Für Layoutentscheidungen ist CSS oder die
Block-Sichtbarkeit die verlässlichere Wahl — der User-Agent lässt sich nicht
zuverlässig auf Bildschirmgrößen abbilden.
Aus Modulen
| Funktion |
Rückgabe |
Modul |
twtheme_render_social_links($args = []) |
string |
socialmedia |
twtheme_icon_render_markup($args = []) |
string |
icons |
twtheme_download_render_item($post_id, $label = '', $options = []) |
gibt direkt aus |
download |
twtheme_posts_loop($args = []) |
string |
loops-filter |
twtheme_filter_render($attributes) |
string |
loops-filter |
twtheme_news_render_bar($attributes = []) |
string |
news |
twtheme_tw_mockup_render_markup($attributes, $block = null, $img_loading = 'lazy') |
string |
mockups |
twtheme_foreignwords_highlight_html($html) |
string |
foreignwords |
twtheme_foreignword_render_glossary_markup($attrs) |
string |
foreignwords |
twtheme_foreignword_format_display_title($title, $post_id = null, $as_html = false) |
string |
foreignwords |
twtheme_print_content_html($content_html) |
string |
print |
twtheme_accordion_print_button_markup($label = '', $position = 'top', $print_id = '', $style_override = '', $print_title = '') |
string |
print |
twtheme_maintenance_is_enabled() |
bool |
maintenance |
twtheme_icons_available() |
bool |
icons |
twtheme_gmaps_render($map_data, $args = []) |
string |
google-maps |
twtheme_osm_render($map_data, $args = []) |
string |
openstreetmap |
twtheme_ad($shortcode_id = '', $class = '', $args = []) |
string |
adsense |
twtheme_content_blocker($content, $name = '', $class = '') |
string |
cookiebot, content-blocker |
Der Sonderfall twtheme_map()
Beide Kartenmodule stellen zusätzlich twtheme_map() bereit — aber erst bei
after_setup_theme mit Priorität 99, und nur wenn der Name noch frei ist. Ein
Projekt kann die Funktion also selbst belegen. Für eindeutige Aufrufe sind
twtheme_gmaps_render() und twtheme_osm_render() die bessere Wahl.
Optionen lesen
| Funktion |
Rückgabe |
Zweck |
twtheme_read_theme_option_value($tab, $key) |
mixed |
Einzelwert aus der Option twtheme. |
twtheme_get_current_post_type() |
string |
Aktueller Inhaltstyp, auch im Backend. |
twtheme_get_post_types() |
array |
Verfügbare Inhaltstypen. |
twtheme_get_roles() |
array |
WordPress-Rollen als Liste. |
twtheme_get_value($data = [], $fallback = true) |
mixed |
Liest value aus einem Feld-Array. |
twtheme_get_title($data = [], $fallback = true) |
string |
Liest title aus einem Feld-Array. |
twtheme_modules_registry() |
array |
Metadaten aller Module. |
Hilfen beim Entwickeln
| Funktion |
Zweck |
twtheme_error_log($message = '') |
Schreibt ins Fehlerprotokoll, mit Datei und Zeile. |
twtheme_console_log($message, $type = 'warn') |
Ausgabe in der Browser-Konsole. |
print_rpre($array = []) |
Gibt ein Array lesbar in <pre> aus. |
get_random_id($length = 6) |
Zufällige Kennung. |
Diese vier gehören in die Entwicklung, nicht in ausgelieferten Code.
Beispiele
// Lesezeit ausgeben
$minutes = twtheme_post_reading_time(get_the_content());
echo '<span class="reading-time">' . esc_html($minutes) . ' min</span>';
// Link mit den Theme-Regeln
if (function_exists('twtheme_hyperlink')) {
echo twtheme_hyperlink('https://example.com', 'Mehr erfahren');
}
// Inhalt erst bei Bedarf laden
echo twtheme_dynamic_content('hero', '<div class="hero-placeholder"></div>');