Beskrivning
Lektivo is for businesses that offer courses or classes — dance studios, yoga studios, language schools, cooking classes, and similar.
It adds custom post types for courses, instructors, locations, and schedules, plus Gutenberg blocks for course lists, schedule viewing, and instructor grids. Professional adds testimonials, location maps, archive filters, and an interactive timetable.
Lektivo handles content and structure. Booking and payment stay with your external provider (dans.se, Bookeo, WooCommerce Bookings, and the like) through configurable booking URLs.
Free vs Professional
Lektivo Free includes the course, instructor, location, and schedule post types, taxonomies, meta fields, core admin, the basic Course List and Instructor Grid blocks, and a day/time-ordered Schedule Viewer class list. Course, instructor, location, and schedule creation is unlimited.
Lektivo Professional (a separate paid build distributed outside wordpress.org) adds:
- Interactive timetable Schedule Viewer (location panels, weekday grid, mobile day cards)
- Course and schedule archive filters (Professional only, including trials)
- Location Map block and map embeds
- Testimonials (CPT, admin meta, theme showcase support)
- Related-course and instructor-course showcase helpers for rich theme cards
- Freemius updates and priority support
Style sample packs and testimonial sample data (latin-heat and other Dance lab packs) live in the companion Dance theme and are tracked as a Dance follow-up, not this plugin ZIP.
Privacy note
Lektivo uses the Freemius SDK for licensing and optional opt-in analytics. Freemius only connects after you choose to opt in or start an upgrade. The free plugin on WordPress.org does not phone home without consent.
Block
Detta tillägg tillhandahåller 3 block.
- Schedule Viewer Weekly class schedule for a semester, listed by day and time.
- Course List Displays a list of courses for the current term by default, with optional filtering by category, difficulty, style, semester, or lifecycle (upcoming, running, past).
- Instructor Grid Displays a grid of instructor cards with photo, name, role, and specialties.
Installation
- From Plugins Add New, search for Lektivo and click Install, or upload the
lektivofolder to/wp-content/plugins/. - Activate Lektivo through the Plugins screen.
- Add courses, instructors, locations, and schedules from the Lektivo admin menus.
- Place Lektivo blocks in the block editor, or use theme templates that support Lektivo.
Vanliga frågor
-
Does Lektivo handle booking or payments?
-
No. Each course or schedule entry has a booking URL that links to your external booking provider.
-
Are there free-plan creation limits?
-
No. The free plugin on WordPress.org lets you create as many courses, instructors, locations, and schedules as you need.
-
Where do I get Lektivo Professional?
-
Professional is a separate paid build (interactive timetable, archive filters, location maps, testimonials, course showcases, and updates). Upgrade from the Freemius pricing screen in wp-admin after activating the plugin, or visit the product page on jugasit.com.
-
Will upgrading keep my content?
-
Yes. Your courses, instructors, locations, and schedules stay in place. Professional (including trials) unlocks the interactive Schedule Viewer, course and schedule archive filters, location maps, testimonials, and rich course showcase helpers. On Free, filter values in the address bar have no effect.
-
Does the free plugin send data to Freemius without asking?
-
No. Connection and optional analytics are opt-in. You stay in control from the Freemius screens in wp-admin.
Recensioner
Detta tillägg har inga recensioner.
Bidragsgivare och utvecklare
”Lektivo” är programvara med öppen källkod. Följande personer har bidragit till detta tillägg.
Bidragande personer”Lektivo” har översatts till 1 språk. Tack till översättarna för deras bidrag.
Översätt ”Lektivo” till ditt språk.
Intresserad av programutveckling?
Läs programkoden, kika på SVN-filförvaret eller prenumerera på utvecklarloggen via RSS.
Ändringslogg
1.3.3
- CI:
package:wporg-freefails when the free ZIP contains licence or plan checks (bin/check-free-gates.php). - Release:
release:wporgalways ships our own free build frompackage:wporg-freeand no longer downloads the Freemius-generated free ZIP;bin/freemius-download-free.phpis removed (#65). - Schedule Viewer layout and filter controls now come from a Professional-only editor script; the free editor shows only the semester picker.
- “Book now” and “View on Map” links that open a new tab include a translated screen-reader cue “(opens in a new tab)” and a single visible cue (the legacy “Book now ” arrow is dropped so the link is not “Book now ”) (#62).
- Course, instructor and location card titles (and Schedule Viewer location headings) default to h2 so archives no longer skip from h1 to h3; Course List lifecycle sections use h2 with nested card h3, and static booking status no longer uses aria-live. Class-based CSS keeps the prior h3 card title size, weight and spacing so theme h2 styles do not enlarge the cards (#64).
- Pricing tier, specialty and room fields in the admin meta boxes expose programmatic labels on existing rows and on rows added with “Add Tier” / “Add Specialty” / “Add Room” (#63).
- Course and schedule filters update results in place when JavaScript is available (URL stays shareable; result count is announced to assistive tech), keep Apply for no-JS only, group fields with a fieldset legend, keep a visible focus outline on filter controls, and the course card Show more toggle exposes aria-expanded / aria-controls with a 24×24 hit target (#59).
- Course, location and instructor cards: thumbnails are decorative (not nameless duplicate links), each course card keeps a single permalink (title) with a visible focus style, decorative info icons are hidden from assistive technology, and the plugin ships its own
.screen-reader-textstyles (#61). - Schedule Viewer timetable class cells expose weekday and time to assistive technology, title links meet a 24×24 minimum hit target, sticky columns no longer cover focused links, and a “Skip schedule” link bypasses long timetable regions (#60).
- WordPress.org free build no longer ships licence-gated code (Guideline 5): course archive filtering, licence notices and the Course Filters / Location Map shortcodes are Professional-only (#65).
1.3.2
- Previous-release candidate-build upgrade CI job
(test:upgrade-from-previous): installs the last GitLab Release plugin
and Dance theme ZIPs withsv_SEand seeded content, replaces both with
the new builds in the same folders, asserts an active plugin, clean
debug.log, rendered home/courses/schedules, Freemius SDKlanguages/
in the production ZIP, and desktop plus 390px screenshots per style
variation. Dance theme ZIPs fall back to
tests/fixtures/upgrade/ when cross-project release downloads are
unavailable (#55). - Automated folder-name upgrade smoke test: install under
coursekit/,
upload the canonicallektivo/ZIP beside it, assert a single active
plugin, preserved course data and options, retirement notice option, and
no PHP fatals (#55). - Release Checklist and
docs/RELEASE.mdrequire “Upgrade test from
previous release passed” before tagging (#55). - Document the
coursekit/lektivo/upgrade path in the release
checklist and readme upgrade notice (#55). - When a site still runs Lektivo from
wp-content/plugins/coursekit/
(common after Freemius in-place updates from the CourseKit product name)
and a manual zip upload installslektivo/beside it, the canonical
install deactivates the leftovercoursekit/copy and shows an admin
notice so administrators can delete the unused folder. Content and
settings are shared WordPress data and stay intact (#55).
1.3.1
- Localize visitor-facing weekday names on
sv_SEsites: long labels
(Torsdag), short schedule abbreviations (tor), and plural session
forms (Torsdagar). Helpers prefer the lektivo text domain then
WordPress$wp_locale; Schedule Viewer fallbacks no longer hard-code
English (#57). - Ship Swedish
lektivotranslations (languages/lektivo-sv_SE.po/
.mo) inside the plugin ZIP sosv_SEsites (for example
ritmostudio.se) show visitor-facing strings in Swedish without a
wordpress.org language pack after the CourseKit Lektivo rename.
Packaging no longer excludes the pluginlanguages/tree; CI verifies
the ZIP contains the.moand key visitor strings translate (#56,
related lektivo-dance#71). - Production packaging keeps
vendor/freemius/wordpress-sdk/languages/in
the Freemius ZIP (.distignoreno longer strips nestedlanguages
paths) and CI fails if that folder is missing from the built ZIP (#53).
1.3.0
- Shortcode wrappers for every Lektivo block so Classic Editor and HTML
widgets can embed the same markup as Gutenberg:[lektivo_course_list],
[lektivo_instructor_grid],[lektivo_schedule_viewer],
[lektivo_course_filters], and[lektivo_location_map]. Professional
gates match the blocks (filters stay empty without a licence; Schedule
Viewer keeps the free class list vs Pro timetable). Use
layout=”compact” on the schedule shortcode for the compact day-card
list (#17). - Course List Term control: defaults to the current bookable semester
(sameHelpers::get_current_semester()logic as Schedule Viewer), with
options for all terms or a fixed semester. Course cards show day and time
from the schedule in the displayed term. Blocks saved before this keep
listing all terms until changed (#38). - Schedule Viewer block settings for Layout (Responsive vs Compact list)
and Show filters, so a page can embed the week as day cards on every
screen size without the filter form. Existing embeds keep the responsive
timetable and filters (#41). - Lektivo always uses the site language (Settings General) for its own
strings — in wp-admin, the block editor, REST (including_locale=user),
and on the front end — even when the logged-in user’s profile language
differs. Language-pack.mofiles underwp-content/languages/plugins/
are rewritten onto the site locale the same way as editor Jed JSON. A
check ensures the Swedish PO has no empty or fuzzy translations.
Theme-owned copy such as schedule headings stays in Lektivo Dance (#46). - The Freemius Account page is no longer listed under Courses, so customers
do not see the Jugas IT owner’s details and keys. Activation now returns
you to the Courses list, and the licence notices and Plugins row no longer
link to the Account page (#50). - Course and schedule archive filters (
lektivocf_*/lektivosf_*URL
params and filter controls) require Lektivo Professional, including
Freemius trials. Free sites ignore filter values typed into the address by
hand (#15). - Course archive filter query params use the
lektivocf_*prefix (aligned
with schedulelektivosf_*). Bookmarked or shared links that still use
ckf_* keep working as aliases on Professional; new filter forms emit only
lektivocf_* (#40). - Admin list table column keys for difficulty colour / sort order and
semester booking-opens use thelektivo_prefix instead ofck_(#40).
Sites with custom CSS that targeted those admin column classes need the
same rename (ck_colorlektivo_color,ck_sort_order
lektivo_sort_order,ck_booking_openslektivo_booking_opens).
Front-endlektivo-*/wp-block-lektivo-*class names and
–lektivo-diff-* CSS custom properties are unchanged. - JavaScript translation files named after a script handle
(lektivo-{locale}-{handle}.json) are rewritten onto the site language the
same way as the MD5 file-path JSON names, so Swedish (or any site locale)
loads for every Jed file style (#52). - Semester admin form field IDs use the
lektivo-semester-*prefix instead of
the leftoverck-semester-*CourseKit IDs. Term meta keys are unchanged, so
existing semester data is unaffected (#40). - Course archive cards use the same booking button markup and default booking
policy as the Course List block and[lektivo_course_list]shortcode, so a
custom course page and the archive show the same book / status state for the
same courses without extra configuration (#45). - Schedule Viewer no longer forces the page wider than a phone screen:
filters stack below 600 px, day labels sit above class times on narrow
viewports, and long course or instructor names wrap instead of truncating
(#39). - Tag pipelines on the canonical GitLab project fail again when Freemius
credentials are missing, after the project path rename to
jugasit/lektivo/lektivo (forks still dry-run).
1.2.1
- Updated Freemius SDK to the latest version.
1.2.0
- WordPress.org free packaging and gated SVN deploy: local free ZIP
(bin/package-free-plugin.sh/package:wporg-free), Freemius free
download helper,release:wporg(skips cleanly without
WPORG_SVN_USERNAME /WPORG_SVN_PASSWORD), Plugin Check job, and
.wordpress-org/ asset checklist. Pro Schedule Viewer UI lives in
ScheduleViewerPremium.php so free ZIPs ship without locked Pro code. - Idempotent CourseKit Lektivo legacy data migration
(Lektivo\Migration\LegacyCourseKit) and deprecated Dance-theme
compatibility layer (coursekit/*block aliases,coursekit_*
helpers,ck_*template hierarchy fallbacks). - Swedish stopgap language-pack CI artifact (
dist/lektivo-sv_SE.zip)
built fromi18n/lektivo-sv_SE.pofor drop-in under
wp-content/languages/plugins/ until translate.wordpress.org ships
translations. Not bundled in the plugin ZIP. - Renamed the free plugin to Lektivo (slug
lektivo, namespace
Lektivo\, prefixeslektivo_/_lektivo_/lektivo/). - Expand Professional surface for the first public free release: Course
Filters, Location Map, schedule filter/grid helpers, FilterForm,
Testimonials CPT/admin meta, and related/instructor course showcase
helpers (src/Pro/CourseShowcase.php) ship only in@fs_premium_only
paths stripped from the free ZIP. Free keeps CPTs (except testimonials),
taxonomies, meta, core admin, Course List, Instructor Grid, and a plain
day/time-ordered Schedule Viewer list with no upgrade nag. - Plugin Check (
lint:plugin-check) runs with a 512M PHP/WP-CLI memory
limit and fails the pipeline on PCP ERROR or WARNING rows. - Release tooling moved to
tools/release/(autoload-dev only; not
shipped in the plugin ZIP). - Free Schedule Viewer renders the full class-card list without an
upgrade nag; the interactive grid remains premium-only code. - Course pricing meta box: new tier rows use a monotonically increasing
data-next-index so remove-then-add no longer reuses a POST index and
silently drops a tier on save. - Activation with CourseKit inactive migrates and flushes rewrite rules in the
activation hook so front-end course URLs work without an admin page load.
Coexistence detection usesCourseKit\Plugin/
is_plugin_active( ’coursekit/coursekit.php’ ) (not the compat
coursekit_fs() stand-in). Coexistence early-return sets the rewrite flush
flag so re-activating then deactivating CourseKit still refreshes permalinks. lektivo_render_course_grid()(and other hard-coded block wrappers) route
class lists throughlektivo_classes()so Dance still sees
wp-block-coursekit-* twins until the theme MR lands.- Free ZIP excludes all dotfiles via
.distignore.*(fixes Plugin Check
ERROR for shipped.eslintignore) and shipscomposer.jsonalongside
vendor/. Plugin Check CI fails on CSV rows matching
line,column,(ERROR|WARNING), (set -o pipefail+ gate self-test).
Activation smoke installs the builtdist/lektivo.zipinstead of a
working-tree symlink. - Legacy CourseKitLektivo migration: slash block markup for
wp_update_post(),
keep multi-batchblock_markupon the same step, never rename theme
coursekit_dance_* options, run migration onadmin_init(not front-end
plugins_loaded) with explicit pending/running/done state, and flush
rewrites after completion. - Dance compatibility: keep block-theme
template-canvas.phpresults, copy
style handles ontocoursekit/*alias blocks, and dual-emitcoursekit-*
CSS classes vialektivo_classes()while Dance (orcoursekittheme
support) is active. - Unique Composer
autoloader-suffixso CourseKit and Lektivo can coexist
without a fatalComposerAutoloaderInitcollision. - Freemius menu/
first-pathpoints at the Courses CPT list so post-activation
redirects are accessible to admins. - Packaging honours
.distignoreas the single ZIP exclude source; free ZIP
strips premium-only regions and@fs_premium_onlycomments. - Skip full-table legacy scans once
lektivo_db_versionis current (LIKE
scoped to migrated content types). Taggedpackage-pluginbuilds fail when
CHANGELOG lacks## X.Y.Zinstead of falling back to Unreleased. - Front-end Lektivo strings follow the site language (Settings General),
not the logged-in user’s profile language; wp-admin still uses the profile
language. - WordPress.org free package excludes hidden lint/test cache files;
readme.txt
Tested up to is 7.1;src/functions.phpguards against direct file access. - Plugin Check PrefixAllGlobals warnings: template body variables are scoped
inside static closures; block-theme footer HTML uses
$lektivo_block_footer_html. - Admin meta boxes enqueue CSS/JS instead of inline
<style>/<script>. - Schedule templates and schedule queries only expose linked
course/instructor/location titles when the linked post exists, has the
expected type, and is publicly readable (lektivo_get_linked_post()). - Free-plan creation caps (
Licensing::FREE_LIMITS,Admin\PostTypeLimit)
and related limit notices. Local content creation is unlimited in the
free WordPress.org build.