{"id":360122,"date":"2026-09-08T15:37:48","date_gmt":"2026-09-08T15:37:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/4wp-todo\/"},"modified":"2026-09-08T15:37:41","modified_gmt":"2026-09-08T15:37:41","slug":"4wp-todo","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/4wp-todo\/","author":17741300,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"4WP TODO","header_author":"4wp.dev","header_description":"Team tasks and checklists for the 4WP plugin ecosystem \u2014 capture notes, assign categories, and track completion across projects.","assets_banners_color":"000000","last_updated":"2026-09-08 15:37:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/4wpdev\/4wp-todo","header_author_uri":"https:\/\/4wp.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":37,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"4wpdev","date":"2026-09-08 15:37:41","revision":3686933}},"upgrade_notice":{"1.0.2":"<p>Security: GET <code>\/meta<\/code> no longer enumerates all users and notes-posts for limited TODO-access users.<\/p>","1.0.1":"<p>Security fix: REST task creation verifies the user may edit the target post before attaching a note.<\/p>","1.0.0":"<p>Initial public release \u2014 team tasks and checklists using native WordPress notes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3687285,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3687285,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3687285,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3687285,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Admin TODO Lists kanban","2":"Frontend overlay panel on a page","3":"Settings \u2014 visibility rules and overlay options"}},"plugin_section":[],"plugin_tags":[13042,3843,7135,10902,3491],"plugin_category":[58],"plugin_contributors":[262731],"plugin_business_model":[],"class_list":["post-360122","plugin","type-plugin","status-publish","hentry","plugin_tags-checklist","plugin_tags-notes","plugin_tags-project-management","plugin_tags-tasks","plugin_tags-team","plugin_category-user-management","plugin_contributors-4wpdev","plugin_committers-4wpdev"],"banners":{"banner":"https:\/\/ps.w.org\/4wp-todo\/assets\/banner-772x250.png?rev=3687285","banner_2x":"https:\/\/ps.w.org\/4wp-todo\/assets\/banner-1544x500.png?rev=3687285","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/4wp-todo\/assets\/icon-128x128.png?rev=3687285","icon_2x":"https:\/\/ps.w.org\/4wp-todo\/assets\/icon-256x256.png?rev=3687285","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>4WP TODO<\/strong> helps your team capture action items on pages and posts, organize them in kanban-style lists, and track completion without leaving WordPress.<\/p>\n\n<p>Tasks are stored as native <strong>Gutenberg notes<\/strong> (<code>comment_type = note<\/code>) with 4WP metadata for category, assignee, due date, workflow, and page context. Other plugins can create tasks via <code>forwp_todo_create_task()<\/code> or the REST API.<\/p>\n\n<p>A plugin by <a href=\"https:\/\/4wp.dev\/\">4wp.dev<\/a>. <strong>4WP<\/strong> is our project brand; this plugin is not affiliated with, endorsed, or sponsored by WordPress.<\/p>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li><strong>Frontend overlay<\/strong> \u2014 floating panel on the public site for logged-in team members (FAB + task list)<\/li>\n<li><strong>Admin kanban<\/strong> \u2014 <strong>4WP TODO \u2192 TODO Lists<\/strong> with columns (Assigned to me, Due tomorrow, per-page lanes)<\/li>\n<li><strong>Dashboard<\/strong> \u2014 open\/closed counts and activity overview<\/li>\n<li><strong>Taxonomy dimensions<\/strong> \u2014 Category, Status, Workflow (manage terms under Categories \/ Statuses \/ Workflows)<\/li>\n<li><strong>Settings<\/strong> \u2014 frontend overlay toggle, admin bar link, <strong>Who can see TODO<\/strong> visibility rules, optional tasks page with block<\/li>\n<li><strong>Gutenberg block<\/strong> \u2014 <code>forwp\/todo-tasks<\/code> for a full kanban on a page<\/li>\n<li><strong>REST API<\/strong> \u2014 <code>forwp-todo\/v1<\/code> for admin React UI and integrations<\/li>\n<li><strong>Integration API<\/strong> \u2014 PHP helpers and discovery endpoints for other 4WP plugins<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Activate the plugin. Users with access see <strong>4WP TODO<\/strong> in wp-admin and the frontend overlay when enabled.<\/li>\n<li>Create tasks from the overlay, admin lists, or programmatically.<\/li>\n<li>Assign categories, due dates, and workflows; close notes when done.<\/li>\n<li>Configure <strong>Settings \u2192 Who can see TODO<\/strong> to limit access by role and user.<\/li>\n<\/ol>\n\n<p>Requires WordPress <strong>6.4+<\/strong> with block editor notes support.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/4wp-todo\/<\/code> or install from the Plugins screen.<\/li>\n<li>Activate <strong>4WP TODO<\/strong>.<\/li>\n<li>Open <strong>4WP TODO \u2192 Dashboard<\/strong> or <strong>TODO Lists<\/strong> in wp-admin.<\/li>\n<li>Optional: open <strong>Settings<\/strong> to configure overlay, admin bar, visibility rules, and a dedicated tasks page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20other%20plugins%20create%20tasks%3F\"><h3>Can other plugins create tasks?<\/h3><\/dt>\n<dd><p>Yes. Call <code>forwp_todo_create_task( $args )<\/code> in PHP or use <code>POST \/wp-json\/forwp-todo\/v1\/tasks<\/code> with a logged-in user who has TODO access.<\/p><\/dd>\n<dt id=\"how%20is%20access%20controlled%3F\"><h3>How is access controlled?<\/h3><\/dt>\n<dd><p>By default, users with <code>edit_posts<\/code> can use TODO. When <strong>visibility rules<\/strong> are configured under Settings, a user must match at least one rule (role + all users or selected users). Capability: <code>forwp_todo_access<\/code>.<\/p><\/dd>\n<dt id=\"where%20are%20tasks%20stored%3F\"><h3>Where are tasks stored?<\/h3><\/dt>\n<dd><p>As WordPress <strong>notes<\/strong> on posts (core comment type <code>note<\/code>) with 4WP comment meta \u2014 not a separate custom post type for each task.<\/p><\/dd>\n<dt id=\"does%20this%20require%20other%204wp%20plugins%3F\"><h3>Does this require other 4WP plugins?<\/h3><\/dt>\n<dd><p>No. It runs standalone. Optional integrations use hooks and REST documented in the Integration API.<\/p><\/dd>\n<dt id=\"is%20there%20a%20public%20frontend%20for%20visitors%3F\"><h3>Is there a public frontend for visitors?<\/h3><\/dt>\n<dd><p>The overlay and task lists are for logged-in users with TODO access only.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>REST: GET <code>\/meta<\/code> no longer lists every site user or every post with notes for TODO users who cannot view all tasks. The catalog is limited to people and posts on notes they can already see.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>REST: <code>POST \/tasks<\/code> requires <code>edit_post<\/code> on the target post (or TODO access for the configured storage post); dedicated <code>permission_callback<\/code> and repository guard.<\/li>\n<li>REST: listing tasks by <code>post_id<\/code> returns 403 when the user cannot attach notes to that post (unless they can view all tasks).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial WordPress.org release: Gutenberg note tasks, admin Dashboard and TODO Lists kanban, frontend overlay.<\/li>\n<li>Settings: overlay toggle, admin bar link, visibility rules, optional tasks page with <code>forwp\/todo-tasks<\/code> block.<\/li>\n<li>REST API (<code>forwp-todo\/v1<\/code>) and Integration API for other plugins.<\/li>\n<li>Taxonomies: Category, Status, Workflow with admin management screens.<\/li>\n<\/ul>","raw_excerpt":"Team tasks and checklists inside WordPress \u2014 Gutenberg notes, kanban lists, frontend overlay, and REST for the 4WP ecosystem.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/360122","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=360122"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/4wpdev"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=360122"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=360122"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=360122"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=360122"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=360122"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=360122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}