{"id":282827,"date":"2026-02-28T12:44:18","date_gmt":"2026-02-28T12:44:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tutor-tools-lite\/"},"modified":"2026-05-04T22:49:01","modified_gmt":"2026-05-04T22:49:01","slug":"marivya-lesson-planner","status":"publish","type":"plugin","link":"https:\/\/pcm.wordpress.org\/plugins\/marivya-lesson-planner\/","author":23412687,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.7.4","stable_tag":"1.7.5","tested":"6.9.4","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Marivya Lesson Planner","header_author":"marivya","header_description":"Lightweight lesson planner & student portal for private teachers (students, lessons, materials, and a simple portal page).","assets_banners_color":"a8ccf0","last_updated":"2026-05-04 22:49:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":473,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.2":{"tag":"1.4.2","author":"marivya","date":"2026-02-28 12:53:55"},"1.7.3":{"tag":"1.7.3","author":"marivya","date":"2026-05-04 21:39:22"},"1.7.4":{"tag":"1.7.4","author":"marivya","date":"2026-05-04 22:32:48"},"1.7.5":{"tag":"1.7.5","author":"marivya","date":"2026-05-04 22:49:01"}},"upgrade_notice":{"1.5.0":"<p>Adds free recurring lesson creation: create weekly, biweekly or monthly lesson copies from the lesson editor.<\/p>","1.4.3":"<p>Security and cleanup release: stronger validation, safer calendar AJAX, cleaned ZIP packaging, and improved portal\/privacy handling.<\/p>","1.4.2":"<p>WordPress-compatibility hardening + cleaner admin messages. Portal link uses the saved Portal URL.<\/p>","1.4.1":"<p>Calendar fixes + student filter, improved notifications timezone handling, and portal URL setting.<\/p>","1.0.0":"<p>First public release of Marivya Lesson Planner.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3522745,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3522745,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3522745,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3522745,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.2","1.7.3","1.7.4","1.7.5"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Students list and student edit screen.","2":"Lesson editor with date\/time\/duration and the free Repeat lesson box.","3":"Materials attached to a student.","4":"Student Portal access (magic link \/ PIN).","5":"Calendar view (moving lessons via drag and drop).","6":"Student Portal (student view)."}},"plugin_section":[],"plugin_tags":[416,18364,4538,12482,21983],"plugin_category":[40],"plugin_contributors":[256791],"plugin_business_model":[],"class_list":["post-282827","plugin","type-plugin","status-publish","hentry","plugin_tags-calendar","plugin_tags-lessons","plugin_tags-portal","plugin_tags-recurring","plugin_tags-tutor","plugin_category-calendar-and-events","plugin_contributors-marivya","plugin_committers-marivya"],"banners":{"banner":"https:\/\/ps.w.org\/marivya-lesson-planner\/assets\/banner-772x250.png?rev=3522745","banner_2x":"https:\/\/ps.w.org\/marivya-lesson-planner\/assets\/banner-1544x500.png?rev=3522745","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/marivya-lesson-planner\/assets\/icon-128x128.png?rev=3522745","icon_2x":"https:\/\/ps.w.org\/marivya-lesson-planner\/assets\/icon-256x256.png?rev=3522745","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Marivya Lesson Planner<\/strong> helps tutors, private teachers, language teachers and coaches manage students, lessons and shared materials inside WordPress.<\/p>\n\n<p>It includes a simple <strong>Student Portal<\/strong> that students can open via a <strong>magic link<\/strong> or <strong>PIN<\/strong>, so they can see upcoming lessons and notes without creating WordPress accounts.<\/p>\n\n<p><strong>Highlights<\/strong>\n- Manage <strong>Students<\/strong>, <strong>Lessons<\/strong>, and <strong>Materials<\/strong> as dedicated WordPress admin screens.\n- Create <strong>recurring lesson copies<\/strong> from one lesson: weekly, every 2 weeks, or monthly.\n- Use lesson fields for date, time, duration, status, meeting link, notes and homework.\n- Move lessons in the weekly calendar with drag and drop.\n- Attach materials to a student or keep them global.\n- Give students portal access via magic link or PIN.\n- Send teacher email reminders and export upcoming lessons as an ICS calendar file.\n- WordPress privacy integration: personal data <strong>exporter<\/strong> and <strong>eraser<\/strong>.\n- No telemetry. No external services required.<\/p>\n\n<p><strong>Simple recurring lessons are included in the free version.<\/strong> A future Pro add-on may add advanced recurring rules, student reminders, billing helpers and a richer portal.<\/p>\n\n<blockquote>\n  <p>This plugin is independent and not affiliated with any LMS vendor.<\/p>\n<\/blockquote>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Create a <strong>Student<\/strong>.<\/li>\n<li>Add a <strong>Lesson<\/strong> with date, time and duration.<\/li>\n<li>In the lesson editor, use <strong>Repeat lesson<\/strong> to create future weekly, biweekly or monthly lesson copies.<\/li>\n<li>Optionally attach <strong>Materials<\/strong> to the student.<\/li>\n<li>Open a student and use the <strong>Student Portal access<\/strong> box to generate a magic link or set a PIN.<\/li>\n<li>Students access the portal from the link or by PIN. A secure session cookie keeps them logged in for 30 days.<\/li>\n<\/ol>\n\n<h4>Privacy<\/h4>\n\n<ul>\n<li>Includes a <strong>personal data exporter<\/strong> and <strong>eraser<\/strong> (<code>Tools \u2192 Export\/Erase Personal Data<\/code>).<\/li>\n<li>Student portal session cookie: <code>marivya_lp_portal<\/code> (HTTP-only, SameSite=Lax, Secure on HTTPS), expires in 30 days.<\/li>\n<li>Magic links expire after a chosen number of days (default 7).<\/li>\n<li>No personal data is sent to third parties.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/marivya-lesson-planner\/<\/code> directory or install via <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>A <strong>Student Portal<\/strong> page is created automatically (you can change the URL later).<\/li>\n<li>Go to <strong>Students<\/strong> and create your first student.<\/li>\n<li>Add one lesson or create a recurring lesson series from the lesson editor.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20create%20recurring%20lessons%20in%20the%20free%20version%3F\"><h3>Can I create recurring lessons in the free version?<\/h3><\/dt>\n<dd><p>Yes. Open or create a lesson, set its date and time, then use the <strong>Repeat lesson<\/strong> box. You can create weekly, every-2-weeks or monthly copies. Existing matching lessons for the same student, date and time are skipped.<\/p><\/dd>\n<dt id=\"does%20recurring%20editing%20change%20the%20whole%20series%20later%3F\"><h3>Does recurring editing change the whole series later?<\/h3><\/dt>\n<dd><p>No. The free recurring feature creates future lesson copies once. Each generated lesson can then be edited independently.<\/p><\/dd>\n<dt id=\"how%20do%20i%20send%20a%20magic%20link%20to%20a%20student%3F\"><h3>How do I send a magic link to a student?<\/h3><\/dt>\n<dd><p>Open a <strong>Student<\/strong> in the admin and use the <strong>Student Portal access<\/strong> box to generate and copy the link, or send it via email from the same screen.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20pin%20instead%20of%20a%20link%3F\"><h3>Can I use a PIN instead of a link?<\/h3><\/dt>\n<dd><p>Yes. Set a PIN in the same <strong>Student Portal access<\/strong> box. PIN attempts are rate-limited and the PIN is stored as a hash.<\/p><\/dd>\n<dt id=\"where%20is%20the%20portal%20page%20url%20set%3F\"><h3>Where is the portal page URL set?<\/h3><\/dt>\n<dd><p>A portal page is created on activation. You can change the base URL used in student access links in <strong>Marivya Lesson Planner \u2192 Settings \u2192 Student Portal<\/strong>.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20add%20a%20frontend%20login%20or%20user%20accounts%3F\"><h3>Does the plugin add a frontend login or user accounts?<\/h3><\/dt>\n<dd><p>No. Students access their portal via a time-limited token link or a PIN; no WP user accounts are created.<\/p><\/dd>\n<dt id=\"how%20do%20i%20export%20or%20erase%20personal%20data%3F\"><h3>How do I export or erase personal data?<\/h3><\/dt>\n<dd><p>Use WordPress tools: <strong>Tools \u2192 Export Personal Data<\/strong> \/ <strong>Tools \u2192 Erase Personal Data<\/strong>. The plugin registers its own exporter\/eraser.<\/p><\/dd>\n<dt id=\"does%20uninstall%20remove%20all%20data%3F\"><h3>Does uninstall remove all data?<\/h3><\/dt>\n<dd><p>By default, options and sensitive portal metadata are removed, while CPT content (students\/lessons\/materials) is preserved.\nYou can force full removal via:\n    define( 'MARIVYA_LP_DELETE_ALL_DATA_ON_UNINSTALL', true );\nor by hooking:\n    add_filter( 'marivya_lp_uninstall_remove_content', '__return_true' );<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.7.4<\/h4>\n\n<ul>\n<li>Critical fix: include the missing validation helper file required during plugin load.<\/li>\n<li>Updated the student rate label to use a currency-neutral \u201cHourly rate\u201d label.<\/li>\n<\/ul>\n\n<h4>1.7.3<\/h4>\n\n<ul>\n<li>Fixed Plugin Check findings: sanitized input handling, recurring lesson nonce checks and translator comment.<\/li>\n<li>Kept the refreshed student portal styling and improved front-end consistency.<\/li>\n<li>Removed a duplicate-check query pattern flagged by VIP performance rules.<\/li>\n<\/ul>\n\n<h4>1.7.2<\/h4>\n\n<ul>\n<li>Refreshed the student portal UI to match the new plugin style more closely.<\/li>\n<li>Improved the portal hero area, navigation tabs, lesson cards, homework cards, materials cards and PIN login form.<\/li>\n<li>Added compact student portal stats for a cleaner and more app-like front-end experience.<\/li>\n<\/ul>\n\n<h4>1.7.1<\/h4>\n\n<ul>\n<li>Kept Marivya plugin screens in English even when the WordPress dashboard language is different.<\/li>\n<li>Fixed the student list filters so the empty student tag dropdown is no longer shown when there are no tags.<\/li>\n<li>Improved status labels and list column labels for a cleaner English admin experience.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Full admin UI refresh for a more cohesive visual style across plugin screens.<\/li>\n<li>Unified styling for dashboard, settings, planning, notifications, list screens and edit screens.<\/li>\n<li>Keeps the refreshed weekly calendar and extends the same design language to the rest of the plugin.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Refreshed the weekly calendar UI with a cleaner banner-inspired layout inside WordPress admin.<\/li>\n<li>Added a right sidebar with selected lesson details and quick actions.<\/li>\n<li>Improved lesson cards, colors and calendar controls for better screenshots and easier scanning.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Added free recurring lesson creation from the lesson editor: weekly, every 2 weeks or monthly.<\/li>\n<li>Added duplicate skipping for generated recurring lessons.<\/li>\n<li>Added recurring metadata registration and validation.<\/li>\n<li>Updated readme copy to highlight tutors, recurring lessons and the student portal.<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Removed accidental SVN\/trunk files from the installable plugin package.<\/li>\n<li>Added centralized validation for dates, times, durations, statuses, URLs and portal PINs.<\/li>\n<li>Hardened calendar AJAX so only Lesson posts can be moved and invalid date\/time input is rejected.<\/li>\n<li>Improved portal token storage cleanup, portal URL validation and PIN validation.<\/li>\n<li>Improved frontend date formatting, privacy exporter\/eraser coverage and global material visibility.<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Improved WordPress compatibility (standard i18n loading, clearer security\/permissions messages).<\/li>\n<li>Portal link now uses your saved Portal URL setting.<\/li>\n<li>Portal \"page created\" notice is shown once after activation.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Fix: calendar navigation and AJAX config.<\/li>\n<li>New: click an empty calendar slot to create a lesson (prefills date\/time + student).<\/li>\n<li>New: student filter in weekly calendar.<\/li>\n<li>Improved: status styling in calendar (planned\/done\/cancelled).<\/li>\n<li>Improved: notification scheduling uses site timezone; added \u201csend to teacher email\u201d; ICS export includes student name + meeting URL.<\/li>\n<li>New: Student Portal URL setting.<\/li>\n<li>Hardening: improved sanitization for emails\/URLs.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Students, Lessons, Materials CPTs.<\/li>\n<li>Student Portal with magic link and PIN.<\/li>\n<li>AJAX endpoints for calendar events and moving lessons.<\/li>\n<li>Privacy exporter\/eraser integration.<\/li>\n<li>Gentle Pro upsell.<\/li>\n<\/ul>","raw_excerpt":"Lesson planner for tutors: students, recurring lessons, materials, calendar, reminders and a simple student portal.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/282827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=282827"}],"author":[{"embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/marivya"}],"wp:attachment":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=282827"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=282827"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=282827"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=282827"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=282827"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=282827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}