A lightweight collaboration tool for WordPress teams. Add a shared notes board directly to your WordPress dashboard for task lists, reminders, announcements, and quick team communication.
The Admin Notes Board plugin creates a dedicated space on your WordPress dashboard where administrators and editors can share notes, task lists, and important information. Perfect for small to medium teams who need a quick way to communicate without leaving WordPress.
- Dashboard Widget: Prominent "Team Notes" widget on main dashboard
- WYSIWYG Editor: Rich text formatting with WordPress editor
- Plain Text Option: Simple textarea for distraction-free notes
- Shared Notes: All team members see the same content
- Role-Based Access: Control who can edit notes (admin, editor, etc.)
- Last Edited Info: Track who edited notes and when
- Auto-Save: Automatic saving every minute
- AJAX Powered: Save without page reload
- Keyboard Shortcuts: Ctrl+S (save), Ctrl+Shift+C (clear)
- Clear Function: One-click to clear all notes
- Responsive Design: Works on all screen sizes
- Custom Widget Title: Change the widget heading
- No Database Tables: Uses WordPress options (lightweight)
- Translation Ready: Full i18n support
- Secure: Nonce verification and capability checks
- Upload
yt-admin-notes-board.phpto/wp-content/plugins/ - Upload
yt-admin-notes-board.cssto the same directory - Upload
yt-admin-notes-board.jsto the same directory - Activate the plugin through the 'Plugins' menu
- View the "Team Notes" widget on your dashboard
- Configure at Settings → Notes Board
- Go to Dashboard (wp-admin/)
- Find the Team Notes widget
- View current team notes
- Go to Dashboard
- Type or paste content into the editor
- Click Save Notes button
- Notes are instantly shared with all team members
- Bold: Select text and click B
- Italic: Select text and click I
- Lists: Click bullet or numbered list button
- Links: Select text and click link button
- Formatting: Use toolbar buttons
- Simple textarea without formatting
- Great for code snippets or simple lists
- Less visual clutter
- Faster loading
- Click Clear Notes button
- Confirm the action
- All notes removed (cannot be undone)
- Ctrl/Cmd + S: Save notes
- Ctrl/Cmd + Shift + C: Clear notes (with confirmation)
Navigate to Settings → Notes Board to configure:
- Default: "Team Notes"
- Purpose: Customize widget heading
- Examples: "Daily Tasks", "Team Announcements", "Quick Notes"
WYSIWYG Editor (Rich text with formatting)
- WordPress TinyMCE editor
- Bold, italic, lists, links
- Visual formatting
- Larger file size
Plain Text (Simple textarea)
- Simple textarea field
- No formatting options
- Clean and minimal
- Faster performance
Select user roles that can edit notes:
- Administrator (recommended)
- Editor (recommended for editorial teams)
- Author (optional)
- Contributor (optional)
- Subscriber (not recommended)
Note: All users can view notes, only selected roles can edit.
- Enabled: Shows "Last edited by [name] [time] ago"
- Disabled: Hides edit history
- Purpose: Track who made recent changes
Today's Tasks:
- Review pending articles
- Update homepage banner
- Check backup status
- Reply to support tickets
IMPORTANT:
Site maintenance scheduled for Saturday 2 AM - 4 AM
Please save work by Friday evening.
Emergency Contacts:
Developer: John - 555-1234
Designer: Sarah - 555-5678
Hosting: support@hosting.com
This Week's Content:
Mon - Blog: SEO Tips
Wed - Social: Product Launch
Fri - Newsletter: Monthly Update
Remember:
✓ Backup before major updates
✓ Test on staging first
✓ Clear cache after changes
✓ Update copyright year
Widget Title: "Team Notes"
Editor Type: WYSIWYG
Who Can Edit: Administrator, Editor
Show Last Edited: Enabled
Widget Title: "Editorial Notes"
Editor Type: WYSIWYG
Who Can Edit: Administrator, Editor, Author
Show Last Edited: Enabled
Widget Title: "Dev Notes"
Editor Type: Plain Text
Who Can Edit: Administrator
Show Last Edited: Enabled
Widget Title: "Daily Reminders"
Editor Type: Plain Text
Who Can Edit: Administrator, Editor
Show Last Edited: Disabled
yt-admin-notes-board.php # Main plugin file (710 lines)
yt-admin-notes-board.css # Widget styles
yt-admin-notes-board.js # AJAX functionality
README-yt-admin-notes-board.md # Documentation
YT_ANB_VERSION // Plugin version (1.0.0)
YT_ANB_BASENAME // Plugin basename
YT_ANB_PATH // Plugin directory path
YT_ANB_URL // Plugin directory URLOption Name: yt_anb_options
Option Structure:
array(
'notes_content' => 'HTML or plain text',
'editor_type' => 'wysiwyg' or 'plain',
'allowed_roles' => array('administrator', 'editor'),
'widget_title' => 'Team Notes',
'show_last_edited' => true,
'last_edited_by' => 'John Doe',
'last_edited_time' => '2025-01-15 14:30:00'
)plugins_loaded: Load text domainwp_dashboard_setup: Add dashboard widgetadmin_menu: Add settings pageadmin_init: Register settingsadmin_enqueue_scripts: Load CSS/JS
plugin_action_links_{basename}: Add settings link
yt_anb_save_notes: Save notes contentyt_anb_clear_notes: Clear all notes
View Notes: Any logged-in user with dashboard access
Edit Notes: User role must be in "allowed_roles" setting
Configure Settings: manage_options capability
Input:
- Notes content:
wp_kses_post()(allows safe HTML) - Widget title:
sanitize_text_field() - Roles:
sanitize_key()
Output:
- Content:
wp_kses_post()+wpautop() - Text:
esc_html() - Attributes:
esc_attr()
- Nonce Verification: All AJAX requests
- Capability Checks: Role-based access control
- Input Sanitization: All user input cleaned
- Output Escaping: All output escaped
- XSS Prevention: Proper HTML filtering
- CSRF Protection: Nonce tokens
The plugin includes optional auto-save functionality:
- Interval: Every 60 seconds (1 minute)
- Condition: Only if content changed
- Method: AJAX background save
- User Feedback: Silent (no message shown)
To enable: Uncomment in JavaScript file (line 205)
- Database: 1 option entry (~2-10 KB depending on content)
- HTTP Requests: 0 (widget loads with dashboard)
- AJAX: Only when saving/clearing
- Memory: < 100 KB
- First Load: +50-100ms (JavaScript/CSS)
- Subsequent: Cached (0ms)
- WYSIWYG Editor: +200-300ms
- Plain Text: +10ms
- No Database Tables: Uses lightweight options
- Conditional Loading: Scripts only on dashboard
- Minification: Ready for production minification
- Caching: Compatible with all cache plugins
Yes, but last save wins. The plugin doesn't lock editing. Use "last edited" info to coordinate.
The second save overwrites the first. We recommend checking "last edited" before saving major changes.
Yes, with WYSIWYG editor. The plugin uses wp_kses_post() which allows safe HTML.
No hard limit, but keep notes under 10,000 characters for best performance.
Not currently. The WYSIWYG editor has media buttons disabled to keep notes lightweight.
Yes, the dashboard widget works with any WordPress setup (Classic or Block editor for posts).
Not currently. One shared notes board per site.
Yes, if you backup your WordPress database (wp_options table).
Not directly, but you can copy/paste content or export via database backup.
Yes, each site in a network has its own notes board.
Causes:
- User role not in "allowed_roles"
- Widget hidden via Screen Options
Solutions:
- Go to Settings → Notes Board, check roles
- Click "Screen Options" on dashboard, enable widget
Causes:
- User role doesn't have edit permission
- JavaScript error
Solutions:
- Check Settings → Notes Board → Who Can Edit
- Check browser console for errors
- Try different editor type (Plain Text)
Causes:
- JavaScript error
- AJAX blocked
- Nonce expired
Solutions:
- Refresh page
- Check browser console
- Disable other plugins temporarily
Causes:
- Someone clicked Clear Notes
- Database issue
Solutions:
- Check with team members
- Restore from database backup
- Check Settings → Notes Board (notes might be saved)
Causes:
- Theme/plugin conflict
- JavaScript error
Solutions:
- Switch to Plain Text editor temporarily
- Deactivate other plugins
- Check browser console
Do:
- Keep notes concise and organized
- Use lists for tasks
- Include dates for deadlines
- Update regularly
- Archive old information
Don't:
- Store sensitive passwords
- Write novels (use posts instead)
- Include private information
- Forget to save changes
- Clear without checking with team
- Morning Standup: Update daily tasks
- End of Day: Check off completed items
- Weekly: Archive old notes
- Before Saving: Check "last edited" info
- Use Formatting: Make notes scannable
- Keep notes under 5,000 characters
- Use Plain Text for simple notes
- Clear old notes regularly
- Don't embed large images
- Use lists instead of paragraphs
- Notes content (text/HTML)
- Last editor's display name
- Last edit timestamp
- Widget settings
- No personal data by default
- "Last edited by" shows display name (public)
- No IP addresses stored
- No tracking or analytics
- Notes persist indefinitely
- Deleted only when:
- Clear button clicked
- Plugin uninstalled
- Database cleaned manually
When you delete the plugin:
- All notes content deleted
- Plugin settings removed
- No database tables to drop
- WordPress cache flushed
Note: Notes are permanently deleted. Export if needed.
- Initial release
- Dashboard widget with shared notes
- WYSIWYG and plain text editors
- Role-based access control
- Last edited tracking
- Auto-save functionality
- AJAX save/clear
- Keyboard shortcuts
- Configurable settings page
- Translation ready
- Mobile responsive
Potential future features:
- Note history/revisions
- Multiple note boards
- Note categories/tags
- Rich media support
- Real-time collaboration
- Email notifications
- Export to PDF/CSV
- Note templates
- Markdown support
- Mobile app
- PHP: 710 lines
- CSS: 394 lines
- JS: 405 lines
- Total: 1,509 lines
add_filter('yt_anb_widget_priority', function($priority) {
return 'low'; // 'high', 'core', 'default', 'low'
});add_filter('yt_anb_allowed_html', function($allowed_tags) {
// Add/remove allowed HTML tags
return $allowed_tags;
});add_filter('yt_anb_autosave_interval', function($interval) {
return 120000; // 2 minutes (in milliseconds)
});add_filter('yt_anb_note_templates', function($templates) {
$templates['tasks'] = "Today's Tasks:\n- \n- \n- ";
return $templates;
});Follow WordPress Coding Standards:
phpcs --standard=WordPress yt-admin-notes-board.phpFor issues, questions, or feature requests:
GPL v2 or later
Krasen Slavov
- Website: https://krasenslavov.com
- GitHub: @krasenslavov
Collaborate better with a shared notes board for your WordPress team!