{"id":346683,"date":"2026-07-30T10:25:19","date_gmt":"2026-07-30T10:25:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/vovas-post-grids\/"},"modified":"2026-07-30T12:35:16","modified_gmt":"2026-07-30T12:35:16","slug":"vova-post-grids","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/vova-post-grids\/","author":7790647,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.3","stable_tag":"2.0.3","tested":"7.0.2","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Vova's Post Grids","header_author":"Vova Anokhin","header_description":"A responsive posts grid block with flexible queries and AJAX pagination.","assets_banners_color":"fff8e7","last_updated":"2026-07-30 12:35:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/postgrids.space\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.1":{"tag":"2.0.1","author":"gn_themes","date":"2026-07-30 10:25:07"},"2.0.2":{"tag":"2.0.2","author":"gn_themes","date":"2026-07-30 12:10:47"},"2.0.3":{"tag":"2.0.3","author":"gn_themes","date":"2026-07-30 12:35:16"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3628497,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3628497,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3628395,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3628395,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3628565,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/post.php?post=1000&action=edit\",\"preferredVersions\":{\"php\":\"latest\",\"wp\":\"latest\"},\"login\":true,\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"vova-post-grids\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire '\\\/wordpress\\\/wp-load.php';\\n\\n$demo_titles = array(\\n\\t'Building a Flexible Content Strategy',\\n\\t'Designing Responsive Editorial Layouts',\\n\\t'Ten Ideas for a Better Home Page',\\n\\t'How to Organize a Growing Content Library',\\n\\t'A Practical Guide to Content Discovery',\\n\\t'Creating Consistent Cards Across Your Site',\\n\\t'Making Archive Pages Easier to Browse',\\n\\t'Choosing the Right Grid for Your Stories',\\n\\t'Simple Ways to Improve Reading Flow',\\n\\t'Planning an Editorial Calendar That Works',\\n);\\n\\nforeach ( $demo_titles as $index => $title ) {\\n\\t$post_id = wp_insert_post(\\n\\t\\tarray(\\n\\t\\t\\t'import_id'    => 1001 + $index,\\n\\t\\t\\t'post_author'  => 1,\\n\\t\\t\\t'post_title'   => $title,\\n\\t\\t\\t'post_type'    => 'post',\\n\\t\\t\\t'post_status'  => 'publish',\\n\\t\\t\\t'post_date'    => gmdate( 'Y-m-d H:i:s', time() - $index * DAY_IN_SECONDS ),\\n\\t\\t\\t'post_excerpt' => 'A short demo excerpt created for the Post Grids preview.',\\n\\t\\t\\t'post_content' => '<!-- wp:paragraph --><p>This demo post gives the Post Grids block realistic content to display in WordPress Playground.<\\\/p><!-- \\\/wp:paragraph -->',\\n\\t\\t),\\n\\t\\ttrue\\n\\t);\\n\\n\\tif ( is_wp_error( $post_id ) ) {\\n\\t\\tthrow new RuntimeException( $post_id->get_error_message() );\\n\\t}\\n}\\n\\n$page_id = wp_insert_post(\\n\\tarray(\\n\\t\\t'import_id'    => 1000,\\n\\t\\t'post_author'  => 1,\\n\\t\\t'post_title'   => \\\"Vova's Post Grids\\\",\\n\\t\\t'post_name'    => 'post-grids-preview',\\n\\t\\t'post_type'    => 'page',\\n\\t\\t'post_status'  => 'publish',\\n\\t\\t'post_content' => '<!-- wp:vovapg\\\/post-grids \\\/-->',\\n\\t),\\n\\ttrue\\n);\\n\\nif ( is_wp_error( $page_id ) ) {\\n\\tthrow new RuntimeException( $page_id->get_error_message() );\\n}\\n\\nupdate_option( 'show_on_front', 'page' );\\nupdate_option( 'page_on_front', $page_id );\\n\"}]}"}},"all_blocks":{"vovapg\/post-grids":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"vovapg\/post-grids","version":"2.0.3","title":"Post Grids","category":"vova-post-grids","icon":"grid-view","description":"Responsive post grid with query controls and AJAX pagination.","textdomain":"vova-post-grids","attributes":{"query":{"type":"object","default":{"queryType":"dynamic","postType":"post","taxonomy":"","terms":[],"keyword":"","author":0,"includePosts":[],"excludePosts":[],"postsPerPage":6,"order":"DESC","orderby":"date","ignoreSticky":true,"excludeCurrentPost":false,"hasFeaturedImage":false,"dateRange":{"mode":"none","after":"","before":""},"metaFilter":{"enabled":false,"key":"","compare":"exists","value":"","type":"text"},"posts":[]}},"desktopColumns":{"type":"number","default":3},"tabletColumns":{"type":"number","default":2},"mobileColumns":{"type":"number","default":1},"horizontalGap":{"type":"number","default":24},"verticalGap":{"type":"number","default":24},"imageSize":{"type":"string","default":"medium_large"},"imageAspectRatio":{"type":"string","default":"16:9"},"imageObjectFit":{"type":"string","default":"cover"},"imageObjectPosition":{"type":"string","default":"center center"},"imageBorderRadius":{"type":"number","default":10},"innerElementGap":{"type":"number","default":12},"titleFontSize":{"type":"number","default":17.6},"metaFontSize":{"type":"number","default":13.76},"excerptFontSize":{"type":"number","default":15.36},"readMoreFontSize":{"type":"number","default":16},"textLineHeight":{"type":"number","default":1.35},"elements":{"type":"array","default":[{"id":"image","visible":true},{"id":"title","visible":true},{"id":"meta","visible":true},{"id":"excerpt","visible":true},{"id":"readMore","visible":true}]},"metaFields":{"type":"array","default":["date","author","categories"]},"readMoreLabel":{"type":"string","default":""},"readMoreStyle":{"type":"string","default":"button"},"readMorePadding":{"type":"number","default":9},"fullCardClickable":{"type":"boolean","default":false},"openLinksInNewTab":{"type":"boolean","default":false},"excerptLength":{"type":"number","default":24},"emptyStateText":{"type":"string","default":""},"loadingSkeleton":{"type":"boolean","default":false},"paginationType":{"type":"string","default":"numbersPrevNext"},"paginationAlignment":{"type":"string","default":"center"},"accentColor":{"type":"string","default":"#0088ff"},"metaColor":{"type":"string","default":""},"excerptColor":{"type":"string","default":""}},"supports":{"align":["wide","full"]},"editorScript":"file:.\/index.js","viewScript":"file:.\/view.js","style":"file:.\/style-index.css","editorStyle":"file:.\/index.css","render":"file:.\/render.php","example":{"attributes":{"desktopColumns":3,"tabletColumns":2,"mobileColumns":1,"horizontalGap":24,"verticalGap":24,"imageSize":"medium_large","imageAspectRatio":"16:9","imageObjectFit":"cover","imageObjectPosition":"center center","imageBorderRadius":10,"innerElementGap":12,"titleFontSize":17.6,"metaFontSize":13.76,"excerptFontSize":15.36,"readMoreFontSize":16,"textLineHeight":1.35,"readMorePadding":9,"paginationType":"numbersPrevNext","paginationAlignment":"center","accentColor":"#0088ff","metaColor":"","excerptColor":""}}}},"tagged_versions":["2.0.1","2.0.2","2.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3628389,"resolution":"1","location":"assets","locale":"","width":1966,"height":1311},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3628389,"resolution":"2","location":"assets","locale":"","width":1966,"height":1311},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3628389,"resolution":"3","location":"assets","locale":"","width":1966,"height":1311},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3628389,"resolution":"4","location":"assets","locale":"","width":1966,"height":1311},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3628389,"resolution":"5","location":"assets","locale":"","width":722,"height":2837}},"screenshots":{"1":"Classic grid with three-column cards","2":"Magazine layout with editorial cards","3":"Compact, text-first news feed","4":"Dense, image-first visual gallery","5":"Query controls in the Gutenberg sidebar"}},"plugin_section":[],"plugin_tags":[6040,900,3480,166,213445],"plugin_category":[],"plugin_contributors":[77660],"plugin_business_model":[],"class_list":["post-346683","plugin","type-plugin","status-publish","hentry","plugin_tags-grid","plugin_tags-pagination","plugin_tags-post-grid","plugin_tags-posts","plugin_tags-query-loop","plugin_contributors-gn_themes","plugin_committers-gn_themes"],"banners":{"banner":"https:\/\/ps.w.org\/vova-post-grids\/assets\/banner-772x250.png?rev=3628395","banner_2x":"https:\/\/ps.w.org\/vova-post-grids\/assets\/banner-1544x500.png?rev=3628395","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/vova-post-grids\/assets\/icon-128x128.gif?rev=3628497","icon_2x":"https:\/\/ps.w.org\/vova-post-grids\/assets\/icon-256x256.gif?rev=3628497","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/vova-post-grids\/assets\/screenshot-1.png?rev=3628389","caption":"Classic grid with three-column cards"},{"src":"https:\/\/ps.w.org\/vova-post-grids\/assets\/screenshot-2.png?rev=3628389","caption":"Magazine layout with editorial cards"},{"src":"https:\/\/ps.w.org\/vova-post-grids\/assets\/screenshot-3.png?rev=3628389","caption":"Compact, text-first news feed"},{"src":"https:\/\/ps.w.org\/vova-post-grids\/assets\/screenshot-4.png?rev=3628389","caption":"Dense, image-first visual gallery"},{"src":"https:\/\/ps.w.org\/vova-post-grids\/assets\/screenshot-5.png?rev=3628389","caption":"Query controls in the Gutenberg sidebar"}],"raw_content":"<!--section=description-->\n<p><a href=\"https:\/\/postgrids.space\">Vova's Post Grids<\/a> is a native Gutenberg block for building responsive post grids directly in the WordPress editor.<\/p>\n\n<p>Build a dynamic query or hand-pick specific posts, then fine-tune the result without touching code.<\/p>\n\n<h4>Flexible content queries<\/h4>\n\n<p>Query any public post type and its public taxonomies. Filter content by taxonomy terms, keyword, author, date range, featured image, or custom fields. Control ordering, sticky posts, the current post, and the number of posts per page.<\/p>\n\n<h4>Responsive layouts<\/h4>\n\n<p>Configure desktop, tablet, and mobile column counts independently. Adjust horizontal and vertical spacing to create classic grids, editorial layouts, compact feeds, or image-first galleries.<\/p>\n\n<h4>Complete card controls<\/h4>\n\n<p>Reorder or hide the featured image, title, metadata, excerpt, and read-more link. Customize image treatment, typography, colors, spacing, excerpt length, metadata, taxonomy badges, and link presentation.<\/p>\n\n<h4>Smooth AJAX pagination<\/h4>\n\n<p>Add numbered or previous\/next pagination. The block loads each selected page through the WordPress REST API and updates the grid in place without reloading the whole page.<\/p>\n\n<h4>Native, free, and open source<\/h4>\n\n<p>The block uses WordPress data APIs, server-side rendering, and core editor components. Every feature is included for free: there is no Pro tier, trial, account, or external service. Vova's Post Grids is licensed under GPL-2.0-or-later and can be used on commercial websites.<\/p>\n\n<p>The project source code and releases are available on <a href=\"https:\/\/github.com\/vanokhin\/vova-post-grids\">GitHub<\/a>.<\/p>\n\n<h3>Development<\/h3>\n\n<p>The release archive includes the human-readable block source and locked npm dependency metadata.<\/p>\n\n<ol>\n<li>Install Node.js and npm, then run <code>npm ci<\/code>.<\/li>\n<li>Install WP-CLI with the i18n command available.<\/li>\n<li>Run <code>npm run build<\/code> to compile production assets and regenerate the translation template.<\/li>\n<li>Run <code>npm run lint:js<\/code> and <code>npm run lint:css<\/code> for JavaScript and stylesheet checks.<\/li>\n<li>Install the Composer development dependencies and run <code>npm run lint:php<\/code> for WordPress and PHP 7.4 compatibility checks.<\/li>\n<li>Run <code>npm run export<\/code> to build and create the release ZIP in <code>dist\/<\/code>.<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>vova-post-grids<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin ZIP through <code>Plugins &gt; Add New &gt; Upload Plugin<\/code>.<\/li>\n<li>Activate <strong>Vova's Post Grids<\/strong>.<\/li>\n<li>Open a post or page in the block editor.<\/li>\n<li>Add the <strong>Post Grids<\/strong> block from the <strong>Vova Post Grids<\/strong> category.<\/li>\n<li>Configure the query, layout, content, and pagination in the block sidebar.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20content%20can%20the%20block%20display%3F\"><h3>Which content can the block display?<\/h3><\/dt>\n<dd><p>Any public post type and its public taxonomies, or a hand-picked list of specific posts.<\/p><\/dd>\n<dt id=\"does%20pagination%20reload%20the%20whole%20page%3F\"><h3>Does pagination reload the whole page?<\/h3><\/dt>\n<dd><p>No. When pagination is enabled, the block loads the selected page through the WordPress REST API and updates the grid in place.<\/p><\/dd>\n<dt id=\"can%20the%20card%20layout%20adapt%20to%20different%20screen%20sizes%3F\"><h3>Can the card layout adapt to different screen sizes?<\/h3><\/dt>\n<dd><p>Yes. Desktop, tablet, and mobile column counts can be configured independently, along with horizontal and vertical spacing.<\/p><\/dd>\n<dt id=\"are%20all%20features%20included%20for%20free%3F\"><h3>Are all features included for free?<\/h3><\/dt>\n<dd><p>Yes. There is no Pro tier, trial, upgrade prompt, or account to create.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20connect%20to%20an%20external%20service%3F\"><h3>Does the plugin connect to an external service?<\/h3><\/dt>\n<dd><p>No. The plugin works with content and APIs provided by the WordPress site where it is installed.<\/p><\/dd>\n<dt id=\"can%20i%20use%20the%20plugin%20on%20a%20commercial%20website%3F\"><h3>Can I use the plugin on a commercial website?<\/h3><\/dt>\n<dd><p>Yes. Vova's Post Grids is free software licensed under GPL-2.0-or-later.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Updated Live Preview in the wp.org repository.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Expanded the plugin description and FAQ.<\/li>\n<li>Added Live Preview in the wp.org repository.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Added screenshots.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Plugin name changed to Vova's Post Grids (formerly Posts Grid)<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Hardened REST API endpoint<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial WordPress.org release.<\/li>\n<\/ul>","raw_excerpt":"Build responsive post grids with flexible queries, complete card controls, and AJAX pagination.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/346683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=346683"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gn_themes"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=346683"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=346683"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=346683"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=346683"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=346683"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=346683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}