Loops & Filter¶
Überblick¶
Mit Loops & Filter legst du im Backend wiederverwendbare Listen (Loops) und passende Filter an. Die Ausgabe erfolgt per Shortcode, z. B. in Seiten, Beiträgen oder Modulen.
Shortcodes im Backend anlegen¶
- Backend → Loops & Filter → Neu anlegen
- Titel vergeben (nur für die Übersicht)
- Im Tab Loop den Shortcode kopieren (z. B.
[twtheme-loop id="123"]) - Im Bereich Shortcode Builder die gewünschten Parameter je Zeile eintragen
Format:parameter="wert" - Im Tab Filter analog den Filter‑Shortcode kopieren (z. B.
[twtheme-filter id="123"]) - Optional unter Optionen globale Standardwerte setzen (werden vererbt)
Platzhalter im Loop‑Builder¶
Im Loop‑Builder kannst du Platzhalter verwenden, um Werte später im Shortcode zu setzen:
- Builder‑Zeile:
posts_per_page="%anzahl%" - Shortcode:
[twtheme-loop id="123" args="anzahl:6"]
Mehrere Werte werden mit Komma getrennt: args="anzahl:6,order:ASC".
Shortcode: Loop¶
Basis:
[twtheme-loop id="123"]- Optional:
args="key:value,key2:value2"für Platzhalter
Parameter (Loop)¶
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
id |
– | Pflicht. ID des Loops‑Eintrags. | id="123" |
args |
– | Werte für Platzhalter aus dem Builder. | args="anzahl:6,order:ASC" |
post_type |
– | Post Types, kommasepariert. | post_type="post,project" |
posts_per_page |
12 |
Anzahl Beiträge. | posts_per_page="9" |
orderby |
date |
Sortierung. | orderby="title" |
order |
DESC |
Sortierrichtung. | order="ASC" |
style |
default |
Loop‑Template‑Variante. | style="magazine" |
pagination |
aus Optionen | Pagination‑Modus. | pagination="pages" |
paged |
aus URL | Aktuelle Seite. | paged="2" |
nopaging |
false |
Pagination komplett aus. | nopaging="true" |
show_message |
true |
Leere‑Liste‑Hinweis anzeigen. | show_message="false" |
hide_row |
false |
Row‑Wrapper ausblenden. | hide_row="true" |
column_class |
– | CSS‑Klasse je Spalte. | column_class="col-md-4" |
loop_column_gutter |
aus Optionen | Gutter für Row. | loop_column_gutter="1.5rem" |
s |
– | Suche. | s="Beispiel" |
post_status |
publish |
Statusfilter. | post_status="publish" |
fields |
– | WP_Query‑Feld‑Ausgabe. | fields="ids" |
users |
– | Autoren‑IDs. | users="12,34" |
roles |
– | Autoren‑Rollen. | roles="editor,author" |
years |
– | Jahre‑Filter. | years="2023,2024" |
taxonomy |
– | Taxonomien (Slugs). | taxonomy="category,post_tag" |
taxonomy_relation |
AND |
Verbindung mehrerer Taxonomien. | taxonomy_relation="OR" |
taxonomy_operator |
IN |
Standard‑Operator. | taxonomy_operator="NOT IN" |
taxonomy_{tax}_field |
term_id |
Feld für Taxonomie. | taxonomy_category_field="slug" |
taxonomy_{tax}_operator |
IN |
Operator je Taxonomie. | taxonomy_category_operator="AND" |
taxonomy_{tax}_include_children |
false |
Unterbegriffe einbeziehen. | taxonomy_category_include_children="true" |
taxonomy_{tax}_exclude |
– | Ausgeschlossene Terms. | taxonomy_category_exclude="12,34" |
taxonomy_limit_{tax}_by_term_id |
– | Begrenzung auf Term‑IDs. | taxonomy_limit_category_by_term_id="12,34" |
meta_query_relation |
– | Relation für Meta‑Query. | meta_query_relation="AND" |
meta_query_1_key |
– | Meta‑Key (1..n). | meta_query_1_key="price" |
meta_query_1_value |
– | Meta‑Value (1..n). | meta_query_1_value="100" |
meta_query_1_compare |
– | Vergleich (1..n). | meta_query_1_compare=">=" |
Hinweis: Die Anzahl der Meta‑Query‑Blöcke wird in den Optionen über Anzahl Query Argumente gesteuert.
Shortcode: Filter¶
Basis:
[twtheme-filter id="123"]
Dieser Shortcode erzeugt intern einen twtheme-filter-custom‑Shortcode mit allen Builder‑Parametern.
Parameter (Filter)¶
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
id |
– | Pflicht. ID des Filter‑Eintrags. | id="123" |
post_type |
– | Post Types, kommasepariert. | post_type="post,project" |
post_status |
publish |
Statusfilter. | post_status="publish" |
taxonomy |
– | Taxonomien, kommasepariert. | taxonomy="category,post_tag" |
years |
– | Jahresfilter (Liste oder -1). |
years="2022,2023" |
posts_per_page |
12 |
Anzahl Ergebnisse. | posts_per_page="9" |
type |
dropdown |
Filter‑Layout. | type="list" |
accordion-on-mobile |
false |
Mobile auf Akkordeon erzwingen. | accordion-on-mobile="true" |
filter-multiple |
simple |
Mehrfachauswahl aktivieren. | filter-multiple="multiple" |
column_class |
col-auto |
Spaltenklasse. | column_class="col-md-4" |
column_gutter |
– | Spaltenabstand (Gutter). | column_gutter="1.5rem" |
filter_class |
– | CSS‑Klasse für Filter. | filter_class="is-pill" |
dropdown_btn_class |
– | CSS‑Klasse Dropdown‑Button. | dropdown_btn_class="btn btn-secondary" |
search |
false |
Suchfeld aktivieren. | search="true" |
search_btn_text |
Search |
Button‑Text. | search_btn_text="Suchen" |
search_btn_class |
– | CSS‑Klasse Such‑Button. | search_btn_class="btn btn-primary" |
search_input_placeholder |
Search… |
Platzhalter. | search_input_placeholder="Suche" |
search_input_class |
– | CSS‑Klasse Such‑Input. | search_input_class="form-control" |
search_position |
last |
Position des Suchfelds. | search_position="first" |
taxonomy_{tax}_orderby |
name |
Sortierung der Terms. | taxonomy_category_orderby="count" |
taxonomy_{tax}_order |
ASC |
Sortierrichtung Terms. | taxonomy_category_order="DESC" |
taxonomy_{tax}_exclude |
– | Terms ausschließen. | taxonomy_category_exclude="12,34" |
taxonomy_limit |
– | Begrenzte Taxonomien. | taxonomy_limit="category" |
taxonomy_limit_{tax}_by_term |
– | Begrenzung per Term‑ID. | taxonomy_limit_category_by_term="12,34" |
custom_filter_1 |
– | Eigener Filter‑Titel. | custom_filter_1="Nur Featured" |
custom_filter_1_value |
– | Wert für den Filter. | custom_filter_1_value="1" |
meta_query_relation |
– | Relation für Meta‑Query. | meta_query_relation="AND" |
meta_query_1_key |
– | Meta‑Key (1..n). | meta_query_1_key="price" |
meta_query_1_value |
– | Meta‑Value (1..n). | meta_query_1_value="100" |
meta_query_1_compare |
– | Vergleich (1..n). | meta_query_1_compare=">=" |
Anwendung im Frontend¶
Filter und Loops werden per Shortcode in Seiten/Blöcken eingebunden. Besucher können damit Inhalte filtern und paginieren.
Entwicklertipps¶
- Loop‑Templates liegen unter
template-parts/loops/loop-{style}.php. - Pagination‑Modi:
pages,infinite-loop-auto,infinite-loop-click,false.
Twtheme Hooks & Filter¶
| Hook/Filter | Typ | Parameter | Zweck |
|---|---|---|---|
twtheme_loops_filter_fields |
Filter | ($form_data) |
Felder im Loop/Filter‑Backend ergänzen. |
loops_filter_option_fields |
Filter | ($form_data) |
Optionen unter „Loops & Filter Einstellungen“ erweitern. |
twtheme_filter_query_args |
Filter | ($query_args) |
WP_Query‑Args vor der Abfrage anpassen. |
twtheme_loop_before_content |
Action | ($args) |
Hook vor der Loop‑Ausgabe (z. B. Wrapper, Hinweis). |
twtheme_paginate_link |
Filter | ($page, $args) |
Pagination‑Links anpassen. |
twtheme_filter_before |
Filter | ($html, $args) |
HTML vor den Filter‑Elementen. |
twtheme_filter_label_before_title |
Filter | ($html, $type, $title, $data) |
HTML vor dem Filter‑Titel. |
twtheme_filter_label_title |
Filter | ($html) |
Filter‑Titel‑Markup anpassen. |
twtheme_filter_label_after_title |
Filter | ($html, $type, $title, $data) |
HTML nach dem Filter‑Titel. |
twtheme_filter_is_filtered_class |
Filter | ($class) |
CSS‑Klasse für aktivierte Filter. |
twtheme_filter_clear_btn |
Filter | ($html, $filter_type) |
Reset‑Icon/Button anpassen. |
twtheme_filter_before_end |
Filter | ($html) |
HTML vor dem Ende eines Filter‑Blocks. |
twtheme_filter_before_options |
Filter | ($html) |
HTML vor den Optionen. |
twtheme_filter_after_options |
Filter | ($html) |
HTML nach den Optionen. |