{"id":318267,"date":"2026-06-03T11:07:17","date_gmt":"2026-06-03T11:07:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bmlt-minutes\/"},"modified":"2026-06-03T11:07:04","modified_gmt":"2026-06-03T11:07:04","slug":"bmlt-minutes","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bmlt-minutes\/","author":16732302,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"BMLT Minutes","header_author":"bmltenabled","header_description":"Publish NA service committee meeting minutes (PDF, DOCX, XLSX, Google Doc links) with a simple shortcode.","assets_banners_color":"c2c8d0","last_updated":"2026-06-03 11:07:04","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/bmlt-minutes\/","header_author_uri":"https:\/\/bmlt.app","rating":0,"author_block_rating":0,"active_installs":0,"downloads":42,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"bmltenabled","date":"2026-06-03 11:07:04"}},"upgrade_notice":{"1.0.3":"<p>The shortcode has been renamed from [minutes] to [bmlt_minutes] for a unique prefix. Update any pages using [minutes].<\/p>","1.0.1":"<p>Fixes the Default Sort Order setting and ensures minutes without a meeting date still appear in the [minutes] list.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3559243,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3559243,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3559243,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3559243,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3559243,"resolution":"1","location":"assets","locale":"","width":1280,"height":498},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3559243,"resolution":"2","location":"assets","locale":"","width":1280,"height":427}},"screenshots":{"1":"Frontend <code>[bmlt_minutes]<\/code> shortcode output, grouped by committee. The padlock and \"Protected\" badge indicate a password-protected entry.","2":"Admin <strong>Meeting Minutes<\/strong> list view, with columns for Meeting Date, File \/ Link, Author, and Committees."}},"plugin_section":[],"plugin_tags":[5595,13380,9054,265629,1764],"plugin_category":[50],"plugin_contributors":[174945,154957],"plugin_business_model":[],"class_list":["post-318267","plugin","type-plugin","status-publish","hentry","plugin_tags-agenda","plugin_tags-bmlt","plugin_tags-documents","plugin_tags-meeting-minutes","plugin_tags-pdf","plugin_category-media","plugin_contributors-bmltenabled","plugin_contributors-pjaudiomv","plugin_committers-bmltenabled","plugin_committers-pjaudiomv"],"banners":{"banner":"https:\/\/ps.w.org\/bmlt-minutes\/assets\/banner-772x250.png?rev=3559243","banner_2x":"https:\/\/ps.w.org\/bmlt-minutes\/assets\/banner-1544x500.png?rev=3559243","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bmlt-minutes\/assets\/icon-128x128.png?rev=3559243","icon_2x":"https:\/\/ps.w.org\/bmlt-minutes\/assets\/icon-256x256.png?rev=3559243","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bmlt-minutes\/assets\/screenshot-1.png?rev=3559243","caption":"Frontend <code>[bmlt_minutes]<\/code> shortcode output, grouped by committee. The padlock and \"Protected\" badge indicate a password-protected entry."},{"src":"https:\/\/ps.w.org\/bmlt-minutes\/assets\/screenshot-2.png?rev=3559243","caption":"Admin <strong>Meeting Minutes<\/strong> list view, with columns for Meeting Date, File \/ Link, Author, and Committees."}],"raw_content":"<!--section=description-->\n<p>BMLT Minutes is a lightweight WordPress plugin for service bodies and committees to publish meeting minutes on their website. Most committees produce PDFs, Word docs, spreadsheets, or Google Doc links every month, and need a clean way to organize them by committee and date. Built for the bmlt-enabled community but useful for any organization that needs a tidy minutes archive.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Dedicated <strong>Meeting Minutes<\/strong> post type with an uploaded-file or external-URL document field<\/li>\n<li><strong>Committee<\/strong> taxonomy seeded with common service-committee defaults (Area, Regional, Hospitals &amp; Institutions, Public Relations, Activities, Outreach, Literature, Policy) \u2014 fully editable<\/li>\n<li>Meeting-date field separate from publish-date, with sorting and year-grouping<\/li>\n<li>Supports PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, ODT, ODS, ODP, TXT, RTF, CSV, plus arbitrary URLs (Google Docs, Dropbox, OneDrive)<\/li>\n<li>Single <code>[bmlt_minutes]<\/code> shortcode with grouping, filtering, and limiting<\/li>\n<li>Optional <strong>password protection<\/strong> per post \u2014 for minutes that still contain unredacted personal details<\/li>\n<li>Dedicated <strong>Minutes Manager<\/strong> role \u2014 grant trusted servants access to manage minutes only, without broader site access<\/li>\n<li>Configurable per-file upload size limit (default 10 MB, scoped to the Minutes editor only)<\/li>\n<li>Block-editor compatible (custom fields exposed via the REST API)<\/li>\n<li>Works as a standalone plugin \u2014 no BMLT server required<\/li>\n<\/ul>\n\n<h4>Usage<\/h4>\n\n<p>Add the shortcode to any page or post:<\/p>\n\n<pre><code>[bmlt_minutes]\n<\/code><\/pre>\n\n<p>Filter to one committee, group by year:<\/p>\n\n<pre><code>[bmlt_minutes committee=\"hospitals-institutions\" group_by=\"year\"]\n<\/code><\/pre>\n\n<p>Show the 10 most recent, flat list with excerpts:<\/p>\n\n<pre><code>[bmlt_minutes limit=\"10\" group_by=\"none\" show_excerpt=\"true\"]\n<\/code><\/pre>\n\n<p>Shortcode attributes:<\/p>\n\n<ul>\n<li><code>committee<\/code> \u2014 Slug or comma-separated slugs of Committee terms. Defaults to all committees.<\/li>\n<li><code>year<\/code> \u2014 Restrict to a single year by Meeting Date (e.g. <code>2026<\/code>).<\/li>\n<li><code>limit<\/code> \u2014 Max items to render. <code>-1<\/code> (default) = no limit.<\/li>\n<li><code>order<\/code> \u2014 <code>desc<\/code> (default, newest first) or <code>asc<\/code>.<\/li>\n<li><code>group_by<\/code> \u2014 <code>committee<\/code> (default), <code>year<\/code>, or <code>none<\/code>.<\/li>\n<li><code>show_excerpt<\/code> \u2014 <code>true<\/code> or <code>false<\/code> (default). Shows each post's excerpt under the link.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/bmlt-minutes\/<\/code>, or install via the Plugins screen.<\/li>\n<li>Activate the plugin through the Plugins screen in WordPress.<\/li>\n<li>(Optional) Open <strong>Minutes \u2192 Settings<\/strong> to set your default sort order and upload size cap.<\/li>\n<li>Add minutes under <strong>Minutes \u2192 Add New<\/strong> \u2014 upload a file or paste a Google Doc \/ external link, choose a committee, set the meeting date, publish.<\/li>\n<li>Add <code>[bmlt_minutes]<\/code> to any page or post.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20are%20the%20documents%20stored%3F\"><h3>Where are the documents stored?<\/h3><\/dt>\n<dd><p>Uploaded files go into the standard WordPress Media Library. External links (Google Docs, Dropbox, OneDrive) are stored as URLs on the minutes post \u2014 nothing is copied or proxied.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20without%20bmlt%3F\"><h3>Can I use this without BMLT?<\/h3><\/dt>\n<dd><p>Yes. The plugin works as a standalone document-list plugin \u2014 it makes no calls to any BMLT server.<\/p><\/dd>\n<dt id=\"can%20i%20add%20my%20own%20committees%3F\"><h3>Can I add my own committees?<\/h3><\/dt>\n<dd><p>Yes. The Committee taxonomy is hierarchical (like Categories). Go to <strong>Minutes \u2192 Committees<\/strong> to add, rename, or nest committees. The default list is just a starting point on first activation.<\/p><\/dd>\n<dt id=\"how%20do%20i%20link%20to%20a%20google%20doc%20instead%20of%20uploading%3F\"><h3>How do I link to a Google Doc instead of uploading?<\/h3><\/dt>\n<dd><p>In the <strong>Minutes Document<\/strong> meta box on the editor screen, leave the file field empty and paste your Google Doc \/ Drive URL into the <strong>External Link<\/strong> field.<\/p><\/dd>\n<dt id=\"can%20i%20password-protect%20minutes%20that%20contain%20personal%20details%3F\"><h3>Can I password-protect minutes that contain personal details?<\/h3><\/dt>\n<dd><p>Yes. Some service bodies redact PII before posting, others share unredacted minutes with members only. On the editor screen, set a value in the <strong>Password Protection<\/strong> field of the Minutes Document meta box (or use WordPress's built-in Visibility \u2192 Password protected option in the Publish panel). On the public <code>[bmlt_minutes]<\/code> list, protected entries show a padlock and link to a password-prompt page rather than exposing the document URL. Members enter the shared password once per browser to unlock the document. Default behavior with no password set is fully public access.<\/p><\/dd>\n<dt id=\"can%20i%20password-protect%20the%20entire%20page%20that%20contains%20%5Bbmlt_minutes%5D%3F\"><h3>Can I password-protect the entire page that contains [bmlt_minutes]?<\/h3><\/dt>\n<dd><p>Yes \u2014 use WordPress's built-in page password. Edit the page that holds your <code>[bmlt_minutes]<\/code> shortcode, open the Publish (Block Editor: Status &amp; visibility) panel, set <strong>Visibility \u2192 Password protected<\/strong>, and enter a password. Visitors will see WordPress's standard password form before the whole page (including the minutes list) is rendered. This is independent of the per-post password on individual minutes \u2014 you can combine them if you want a members-only landing page plus an extra lock on specific minutes.<\/p><\/dd>\n<dt id=\"how%20do%20i%20let%20someone%20manage%20minutes%20without%20giving%20them%20full%20site%20access%3F\"><h3>How do I let someone manage minutes without giving them full site access?<\/h3><\/dt>\n<dd><p>There are two ways:<\/p>\n\n<ol>\n<li><strong>Minutes Manager role<\/strong> \u2014 activating the plugin creates this role. Assign a user that role (Users \u2192 edit user \u2192 Role) and they can add, edit, and publish minutes and upload documents, but nothing else in wp-admin.<\/li>\n<li><strong>\"Can manage minutes\" checkbox<\/strong> \u2014 on any user's profile (Users \u2192 edit user) there's a Meeting Minutes section with a \"Can manage minutes\" checkbox. Tick it to grant an existing user (e.g. an Author) minutes access <em>on top of<\/em> their current role, without changing that role. Untick to revoke. If the user's role already grants minutes access, the checkbox shows as locked with a note.<\/li>\n<\/ol>\n\n<p>Administrators and Editors keep full access automatically. Under the hood the Meeting Minutes post type uses its own capabilities (<code>edit_bmlt_minutes<\/code>, <code>publish_bmlt_minutes<\/code>, etc.), so a role-editor plugin can also mix these into any existing role. Curating the committee list stays admin-only; Minutes Managers can assign existing committees but not create new ones.<\/p><\/dd>\n<dt id=\"will%20uninstalling%20delete%20my%20minutes%3F\"><h3>Will uninstalling delete my minutes?<\/h3><\/dt>\n<dd><p>Yes. The <code>uninstall.php<\/code> script removes the plugin's settings and deletes all minutes posts when you delete the plugin via the WordPress admin. Deactivate instead of uninstalling if you want to preserve them.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Renamed the <code>[minutes]<\/code> shortcode to <code>[bmlt_minutes]<\/code> so the tag carries a plugin-specific prefix and won't collide with other plugins.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Removed the unused BMLT Server URL and Service Body ID settings.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed: the Default Sort Order setting now applies to the <code>[minutes]<\/code> shortcode when no <code>order<\/code> attribute is provided.<\/li>\n<li>Fixed: published minutes with no meeting date are no longer excluded from the <code>[minutes]<\/code> list.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Publish service committee meeting minutes (PDF, DOCX, XLSX, Google Doc links) with a simple shortcode.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/318267","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=318267"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bmltenabled"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=318267"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=318267"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=318267"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=318267"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=318267"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=318267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}