{"id":348797,"date":"2026-08-07T06:21:18","date_gmt":"2026-08-07T06:21:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/primo-list\/"},"modified":"2026-08-07T06:30:26","modified_gmt":"2026-08-07T06:30:26","slug":"primo-list","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/primo-list\/","author":7552386,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Primo List","header_author":"Primo","header_description":"Display curated lists of \"things\" (sponsors, partners, staff, features) with image, heading, subtitle, body, link and categories, rendered anywhere via the [primo_list] shortcode.","assets_banners_color":"3c94c8","last_updated":"2026-08-07 06:30:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/primowp.com\/primo-list\/","header_author_uri":"https:\/\/primowp.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":49,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"zurtri","date":"2026-08-07 06:30:26"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3637425,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3637425,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3637425,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3637425,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3637425,"resolution":"1","location":"assets","locale":"","width":1280,"height":960},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3637425,"resolution":"2","location":"assets","locale":"","width":1280,"height":960},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3637425,"resolution":"3","location":"assets","locale":"","width":1280,"height":960}},"screenshots":{"1":"A sponsor grid grouped by tier.","2":"A compact logo wall.","3":"The item editor with the List Item Details meta box."}},"plugin_section":[],"plugin_tags":[2466,6040,245,80,2606],"plugin_category":[43],"plugin_contributors":[274746],"plugin_business_model":[],"class_list":["post-348797","plugin","type-plugin","status-publish","hentry","plugin_tags-directory","plugin_tags-grid","plugin_tags-list","plugin_tags-shortcode","plugin_tags-sponsors","plugin_category-customization","plugin_contributors-zurtri","plugin_committers-zurtri"],"banners":{"banner":"https:\/\/ps.w.org\/primo-list\/assets\/banner-772x250.png?rev=3637425","banner_2x":"https:\/\/ps.w.org\/primo-list\/assets\/banner-1544x500.png?rev=3637425","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/primo-list\/assets\/icon-128x128.png?rev=3637425","icon_2x":"https:\/\/ps.w.org\/primo-list\/assets\/icon-256x256.png?rev=3637425","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/primo-list\/assets\/screenshot-1.png?rev=3637425","caption":"A sponsor grid grouped by tier."},{"src":"https:\/\/ps.w.org\/primo-list\/assets\/screenshot-2.png?rev=3637425","caption":"A compact logo wall."},{"src":"https:\/\/ps.w.org\/primo-list\/assets\/screenshot-3.png?rev=3637425","caption":"The item editor with the List Item Details meta box."}],"raw_content":"<!--section=description-->\n<p>Primo List is a self-contained, dependency-free plugin for displaying curated\nlists of items. Each item has a logo\/image, heading, subtitle, body, optional\nlink and one or more categories. Render any list anywhere with the\n    [primo_list] shortcode.<\/p>\n\n<p>Sponsor walls, partner logos, staff directories, product features: one\nportable tool. No Custom Post Type UI, no ACF, no Bootstrap, no external\nlibraries, no tracking, no external HTTP calls.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Custom post type <strong>Item<\/strong> with logo (featured image), heading (title),\nsubtitle, body and link.<\/li>\n<li>Flat <strong>Category<\/strong> taxonomy, multi-assignable, with a per-category <strong>weight<\/strong>\n(prominence\/sort) and optional accent <strong>colour<\/strong>.<\/li>\n<li><code>[primo_list]<\/code> shortcode with <code>category<\/code>, <code>id<\/code>, <code>layout<\/code>, <code>columns<\/code>,\n  columns_mobile, <code>headings<\/code>, <code>orderby<\/code>, <code>limit<\/code>, <code>lightbox<\/code>, <code>fit<\/code> and\n  ratio attributes.<\/li>\n<li><strong>Manual ordering by drag and drop<\/strong>: an Order column on the Items list lets you\ndrag items into place, saved as you go. Use <code>orderby=\"menu_order\"<\/code> to have that\nhand-set order override category weights entirely; otherwise it breaks ties\nunder the default weight ranking.<\/li>\n<li>Uniform tiles for mixed-proportion images. Tiles default to <strong>square<\/strong>\n(<code>ratio=\"1:1\"<\/code>); set <code>ratio<\/code> to any <code>W:H<\/code>, or <code>ratio=\"auto\"<\/code> to size tiles to\neach image. Choose <code>fit=\"cover\"<\/code> (crop to fill, for art and photos) or <code>fit=\"contain\"<\/code>\n(letterbox the whole image with padding around it, for logos, never cropped).\nThe lightbox always shows the full, uncropped image.<\/li>\n<li>Per-item <strong>crop focus<\/strong> (top \/ center \/ bottom \/ corners) so a <code>cover<\/code> crop\nkeeps the important part of each image (e.g. a subject's head).<\/li>\n<li>Front-end <strong>edit pencil<\/strong> on each item for logged-in editors; jump straight to\nan item's editor while curating a gallery (never shown to visitors).<\/li>\n<li><strong>Filter items by category<\/strong> on the admin Items list (a dropdown above the table).\nFiltering also shows the ready-to-copy shortcode for that exact category, so you\ncan paste it straight into a page.<\/li>\n<li>Three layouts: a responsive <strong>card grid<\/strong>, a compact <strong>logo wall<\/strong>, and a\n<strong>list<\/strong> (image beside text, one row per item, e.g. a books\/catalogue page).<\/li>\n<li><strong>Responsive columns you control.<\/strong> <code>columns<\/code> sets the desktop count; grids\nstep down to two per row on a tablet and one on a phone. Set\n  columns_mobile=\"2\" (or more) to keep several across on a phone; useful for\na logo wall, where one giant logo per row wastes the screen.<\/li>\n<li>Per-item <strong>initials<\/strong> shown in place of a missing image. An item with no image\nand no initials shows nothing at all and the tile closes up around it.<\/li>\n<li>Per-item <strong>link text<\/strong> so the button reads \"Purchase\", \"Read more\", etc.\n(defaults to \"Visit\").<\/li>\n<li>Built-in <strong>lightbox<\/strong> (on by default): click an image to view the full-size\nversion in an overlay, with prev\/next and keyboard navigation. Pure vanilla\nJavaScript, no jQuery or third-party library; degrades to opening the image\nwhen JavaScript is off. Disable per list with <code>lightbox=\"no\"<\/code>.<\/li>\n<li>Weight-based ranking that ignores the category you filtered on, so tiers\nsort correctly (gold before bronze).<\/li>\n<li>Optional, off-by-default <strong>single item pages<\/strong>.<\/li>\n<li>Logos render contained: wide or tall logos are never cropped.<\/li>\n<\/ul>\n\n<p>Documentation, worked examples and other plugins:\n<a href=\"https:\/\/primowp.com\/\">primowp.com<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>primo-list<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install via\nthe Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Add items under <strong>Primo List \u2192 Items<\/strong>, assign categories, and set category\nweights under <strong>Primo List \u2192 Categories<\/strong>.<\/li>\n<li>Place <code>[primo_list category=\"your-category\"]<\/code> on any page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20show%20just%20one%20category%3F\"><h3>How do I show just one category?<\/h3><\/dt>\n<dd><p>Use the category filter: <code>[primo_list category=\"sponsors\"]<\/code>. Items sort by their\nremaining categories' weight (e.g. tier), gold first.<\/p><\/dd>\n<dt id=\"can%20one%20list%20show%20more%20than%20one%20category%3F\"><h3>Can one list show more than one category?<\/h3><\/dt>\n<dd><p>Yes. Separate the slugs with commas:\n    [primo_list category=\"sponsors,partners\"]. An item appears if it belongs to\nany of them, and anything belonging to two of the categories you listed still\nappears only once.<\/p>\n\n<p>Ranking then works on the categories you did <em>not<\/em> name. Each item is placed by\nwhichever of its remaining categories carries the lowest weight, so a gold tier\nstill sorts above a bronze one across the combined list. Add <code>headings=\"yes\"<\/code> to\ngroup the result under those tier headings.<\/p><\/dd>\n<dt id=\"how%20do%20i%20show%20a%20compact%20logo%20wall%3F\"><h3>How do I show a compact logo wall?<\/h3><\/dt>\n<dd><p>Add <code>layout=\"wall\"<\/code>, e.g. <code>[primo_list category=\"sponsors\" layout=\"wall\"]<\/code>.<\/p><\/dd>\n<dt id=\"how%20do%20i%20put%20one%20particular%20item%20at%20the%20top%3F\"><h3>How do I put one particular item at the top?<\/h3><\/dt>\n<dd><p>Go to <strong>Primo List \u2192 Items<\/strong> and drag it up by the handle in the <strong>Order<\/strong> column\n(or type a number into the Order box under Page Attributes on the item editor,\nlower numbers come first). That order breaks ties under the default weight\nranking. If the list has categories with different weights and you want your\nmanual order to win regardless, add <code>orderby=\"menu_order\"<\/code> to the shortcode.<\/p>\n\n<p>Dragging is available when the list is sorted by the Order column (the default)\nand you are not searching. It works with the category filter, and reordering a\nfiltered view leaves items outside that filter where they are.<\/p><\/dd>\n<dt id=\"do%20images%20open%20in%20a%20lightbox%3F\"><h3>Do images open in a lightbox?<\/h3><\/dt>\n<dd><p>Yes, by default. Clicking an item's image opens the full-size version in an\noverlay with prev\/next navigation; no extra plugin needed. Turn it off for a\nlist with <code>lightbox=\"no\"<\/code> (useful for logo walls that link out instead).<\/p><\/dd>\n<dt id=\"can%20items%20have%20their%20own%20pages%3F\"><h3>Can items have their own pages?<\/h3><\/dt>\n<dd><p>Yes, optionally. Enable <strong>Primo List \u2192 Settings \u2192 Enable item pages<\/strong>. Off by\ndefault; with it off, items appear only through the shortcode.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New <code>columns_mobile<\/code> attribute sets how many tiles a grid shows per row on a\nphone (up to 480px). Defaults to 1, so existing shortcodes are unchanged.\nIt is capped at <code>columns<\/code>, and a value of 2 or more also stops a tablet\ndropping below it.<\/li>\n<li>Fixed: <code>columns=\"1\"<\/code> widened to two columns on a tablet.<\/li>\n<li>An item with no image now shows nothing, and the tile closes up around it.\nTo show a placeholder, type the letters you want in the new per-item\n<strong>Initials<\/strong> field. Previously every image-less item showed the first letter\nof its title whether or not you wanted it.<\/li>\n<li>An item with neither an image nor initials is left out of a <code>layout=\"wall\"<\/code>\nlist entirely, rather than leaving an empty tile in the wall.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Built-in dependency-free image lightbox (<code>lightbox<\/code> attribute, on by default)\nwith prev\/next and keyboard navigation.<\/li>\n<li>Admin <strong>Shortcodes<\/strong> reference screen listing a ready-to-use shortcode per\ncategory plus all shortcode options.<\/li>\n<li>Drag-and-drop <strong>manual ordering<\/strong> on the Items list (Order column), with a\nmatching <code>orderby=\"menu_order\"<\/code> shortcode value.<\/li>\n<li>Filtering the Items list by category now surfaces a copy-ready shortcode for\nthat category.<\/li>\n<\/ul>","raw_excerpt":"Display curated lists of &quot;things&quot; (sponsors, partners, staff, features) with image, heading, subtitle, body, link and categories, via a shortcode.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/348797","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=348797"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/zurtri"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=348797"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=348797"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=348797"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=348797"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=348797"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=348797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}