{"id":16,"date":"2026-08-19T16:20:05","date_gmt":"2026-08-19T16:20:05","guid":{"rendered":"https:\/\/blockset.wp.philiprehberger.com\/?page_id=16"},"modified":"2026-08-19T16:20:11","modified_gmt":"2026-08-19T16:20:11","slug":"listing-grid","status":"publish","type":"page","link":"https:\/\/blockset.wp.philiprehberger.com\/?page_id=16","title":{"rendered":"Listing grid"},"content":{"rendered":"\n<main class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-606407ee wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--80);padding-left:var(--wp--preset--spacing--50)\">\n\n<p class=\"has-text-color has-small-font-size wp-block-paragraph\" style=\"color:var(--wp--preset--color--accent-dark);font-family:var(--wp--preset--font-family--mono);font-weight:700;letter-spacing:0.12em;text-transform:uppercase\">SFP-BLOCKS\/LISTING-GRID<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" style=\"font-family:var(--wp--preset--font-family--serif);font-weight:500;letter-spacing:-0.02em;margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\">Listing grid<\/h1>\n\n\n\n<p class=\"has-text-color has-large-font-size wp-block-paragraph\" style=\"color:var(--wp--preset--color--muted);line-height:1.55\">Server-rendered card grid querying any post type. Reads price \/ beds \/ baths \/ sqft \/ neighborhood from post meta and renders them as a tidy fact row. Built for Salt &amp; Cedar&rsquo;s real-estate listings; reusable for any catalog-style CPT (vehicles, equipment, rentals).<\/p>\n\n\n<h2 class=\"wp-block-heading\" style=\"font-family:var(--wp--preset--font-family--serif);font-size:clamp(1.119rem, 1.119rem + ((1vw - 0.2rem) * 1.147), 1.75rem);font-weight:500;letter-spacing:-0.015em;margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--40)\">Live<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-family:var(--wp--preset--font-family--serif);font-size:clamp(1.119rem, 1.119rem + ((1vw - 0.2rem) * 1.147), 1.75rem);font-weight:500;letter-spacing:-0.015em;margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--40)\">Attributes<\/h2>\n\n\n<figure class=\"wp-block-table is-style-stripes blockset-attrs has-text-color\" style=\"font-size:0.875rem\"><table><thead><tr><th>Attribute<\/th><th>Type<\/th><th>Default<\/th><th>Description<\/th><\/tr><\/thead><tbody>\n<tr><td><code>postType<\/code><\/td><td>string<\/td><td><code>\"listing\"<\/code><\/td><td>Which CPT to query<\/td><\/tr>\n<tr><td><code>postsPerPage<\/code><\/td><td>number<\/td><td><code>6<\/code><\/td><td>How many cards to render<\/td><\/tr>\n<tr><td><code>columns<\/code><\/td><td>number<\/td><td><code>3<\/code><\/td><td>Grid column count<\/td><\/tr>\n<tr><td><code>orderby<\/code><\/td><td>string<\/td><td><code>\"menu_order\"<\/code><\/td><td>Sort field (menu_order, date, title)<\/td><\/tr>\n<tr><td><code>order<\/code><\/td><td>string<\/td><td><code>\"ASC\"<\/code><\/td><td>Sort direction<\/td><\/tr>\n<tr><td><code>taxonomy\/terms<\/code><\/td><td>string,string<\/td><td><code>empty<\/code><\/td><td>Optional taxonomy filter (slug list)<\/td><\/tr>\n<tr><td><code>showPrice\/showFacts\/showLocation<\/code><\/td><td>boolean<\/td><td><code>true<\/code><\/td><td>Toggle each card row<\/td><\/tr>\n<tr><td><code>ctaLabel<\/code><\/td><td>string<\/td><td><code>\"View listing \u2192\"<\/code><\/td><td>Per-card CTA text<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n<h2 class=\"wp-block-heading\" style=\"font-family:var(--wp--preset--font-family--serif);font-size:clamp(1.119rem, 1.119rem + ((1vw - 0.2rem) * 1.147), 1.75rem);font-weight:500;letter-spacing:-0.015em;margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--40)\">Example markup<\/h2>\n\n<figure class=\"sfp-code-snippet sfp-code-snippet--html wp-block-sfp-blocks-code-snippet\">\n\t<header class=\"sfp-code-snippet__header\">\n\t\t<span class=\"sfp-code-snippet__lang\">html<\/span>\n\t\t\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=\"sfp-code-snippet__copy\"\n\t\t\t\tdata-sfp-copy-target=\"sfp-code-1\"\n\t\t\t\taria-label=\"Copy code to clipboard\"\n\t\t\t>\n\t\t\t\t<span class=\"sfp-code-snippet__copy-label\">Copy<\/span>\n\t\t\t<\/button>\n\t\t\t<\/header>\n\t<pre class=\"sfp-code-snippet__pre\"><code id=\"sfp-code-1\" class=\"sfp-code-snippet__code language-html\">&lt;!-- wp:sfp-blocks\/listing-grid {&quot;postType&quot;:&quot;listing&quot;,&quot;postsPerPage&quot;:6,&quot;columns&quot;:3,&quot;ctaLabel&quot;:&quot;View home \u2192&quot;} \/--&gt;<\/code><\/pre>\n\t\t\t<figcaption class=\"sfp-code-snippet__caption\">Paste this in any block-editor view (or in a theme template) to drop the block in.<\/figcaption>\n\t<\/figure>\n\n\n<div class=\"wp-block-group has-white-background-color has-background has-border-color is-layout-flow wp-block-group-is-layout-flow\" style=\"border-color:var(--wp--preset--color--border);border-width:1px;border-radius:6px;margin-top:var(--wp--preset--spacing--60);padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\">\n\n<p class=\"has-text-color has-small-font-size wp-block-paragraph\" style=\"color:var(--wp--preset--color--accent-dark);font-family:var(--wp--preset--font-family--mono);font-weight:700;letter-spacing:0.1em;text-transform:uppercase\">SOURCE<\/p>\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/philiprehberger\/wp-portfolio-platform\/tree\/main\/plugins\/sfp-blocks\/src\/listing-grid\">plugins\/sfp-blocks\/src\/listing-grid\/ on GitHub \u2192<\/a><\/p>\n\n<\/div>\n\n<\/main>\n\n","protected":false},"excerpt":{"rendered":"<p>Card grid querying any post type. Price, beds\/baths\/sqft, location, CTA.<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":7,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-16","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blockset.wp.philiprehberger.com\/index.php?rest_route=\/wp\/v2\/pages\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blockset.wp.philiprehberger.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blockset.wp.philiprehberger.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/blockset.wp.philiprehberger.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16"}],"version-history":[{"count":1,"href":"https:\/\/blockset.wp.philiprehberger.com\/index.php?rest_route=\/wp\/v2\/pages\/16\/revisions"}],"predecessor-version":[{"id":23,"href":"https:\/\/blockset.wp.philiprehberger.com\/index.php?rest_route=\/wp\/v2\/pages\/16\/revisions\/23"}],"up":[{"embeddable":true,"href":"https:\/\/blockset.wp.philiprehberger.com\/index.php?rest_route=\/wp\/v2\/pages\/7"}],"wp:attachment":[{"href":"https:\/\/blockset.wp.philiprehberger.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}