Der Produktkatalog: Sortierung, Karten und Preise
Die Shop-Seite von WooCommerce in deinem Layout: oben eine Überschrift und ein paar Zeilen, darunter die Sortierung und Produktkarten mit Preisen. Neue Produkte erscheinen von selbst im Katalog.
Das Ergebnis
<body wp-fields-group="Shop">
<header class="shop-hero">
<h1 wp="post-title">Beans</h1>
<p class="shop-hero__lead" fld-area="Shop lead">Roasted on Mondays, shipped on Tuesdays.</p>
</header>
<form class="sort" wp="sort">
<select class="sort__select" wp="orderby">
<option value="menu_order">Default</option>
<option value="price">Price: low to high</option>
</select>
</form>
<div class="beans" wp="products">
<div class="bean-card">
<a href="#" wp="post-link"><img src="images/bean.jpg" alt="" wp="post-image"></a>
<h3><a href="#" wp="post-title-link">Ethiopia Yirgacheffe</a></h3>
<div class="bean-card__prices">
<span wp="product-price">$14.00</span>
<span wp="product-price-sale">$12.00</span>
<span class="is--old" wp="product-price-regular">$14.00</span>
</div>
</div>
</div>
<div class="beans__empty" wp="no-results">No beans match.</div>
<div class="pagination" wp-paginate="mid_size=1"></div>
</body>- Title: Beans
- WooCommerce → Settings → Products → Shop page: Beans
- Ethiopia Yirgacheffe — $14.00
- Colombia Huila — $13.00
- Brazil Cerrado — $11.00
- House blend “Warm” — $12.00
Roasted on Mondays, shipped on Tuesdays.
Price: low to highEin Käufer hat „Price: low to high“ gewählt, und die Karten wurden neu sortiert.
Schritt für Schritt
Überschrift und Einleitung
wp="post-title" und fld-area über den Karten lesen die Shop-Seite, also die Seite, die unter WooCommerce → Einstellungen → Produkte gewählt ist. Dein Kunde bearbeitet sie wie eine normale Seite.
<h1 wp="post-title">Beans</h1> <p class="shop-hero__lead" fld-area="Shop lead">Roasted on Mondays, shipped on Tuesdays.</p>
Sortierung
<form wp="sort">mit einem<select wp="orderby">darin. Die Werte der Optionen sind die Sortierungen von WooCommerce:menu_order,price,price-desc,date,popularity,rating.<form class="sort" wp="sort"> <select class="sort__select" wp="orderby"> <option value="menu_order">Default</option> <option value="price">Price: low to high</option> </select> </form>
Produktkarten
wp="products" am Raster, die erste Karte ist die Vorlage. Darin stehen Link, Bild, Name und drei Preisblöcke: Die überzähligen blendet das Theme selbst aus. Daneben
wp="no-results".<div class="beans" wp="products"> <div class="bean-card"> <a href="#" wp="post-link"><img src="images/bean.jpg" alt="" wp="post-image"></a> <h3><a href="#" wp="post-title-link">Ethiopia Yirgacheffe</a></h3> <div class="bean-card__prices"> <span wp="product-price">$14.00</span> <span wp="product-price-sale">$12.00</span> <span class="is--old" wp="product-price-regular">$14.00</span> </div> </div> </div> <div class="beans__empty" wp="no-results">No beans match.</div>
Seitenzahlen
wp-paginate an einem leeren Block nach dem Raster.
<div class="pagination" wp-paginate="mid_size=1"></div>
Worauf es ankommt
- Braucht WooCommerce.
- Gibt es kein eigenes
taxonomy-product-cat.html, öffnen sich die Produktkategorien mit demselben Template, undwp="products"zeigt die Produkte der geöffneten Kategorie. - Produkte auf einer anderen Seite, etwa der Startseite, gibt
wp-product-queryaus.
Typische Fehler
Das Build-Protokoll ist der Tab „Logs“ deines Projekts auf themeforge.pro; die kostenlose Markup-Prüfung zeigt dieselben Hinweise.
<div class="beans" wp-query="'post_type'=>'product','posts_per_page'=>12">
<div class="bean-card">
<h3 wp="post-title">Ethiopia Yirgacheffe</h3>
</div>
</div>wp-query statt wp="products" zeigt eine eigene Auswahl: Sortierung und Produktkategorien wirken nicht darauf. Das Protokoll meldet nichts.
<div class="beans" wp="products">
<div class="bean-card">
<h3 wp="post-title">Ethiopia Yirgacheffe</h3>
</div>
</div>wp="products" liefert die Produkte, die WooCommerce für diese Seite ausgewählt hat.
<select class="sort__select" wp="orderby">
<option value="price">Price: low to high</option>
</select>Eine Sortierliste ohne ihr Formular: Der Build schreibt das Attribut ins Protokoll, und es bewirkt nichts.
<form class="sort" wp="sort">
<select class="sort__select" wp="orderby">
<option value="price">Price: low to high</option>
</select>
</form>Die Liste in <form wp="sort">.