
WebTV-Learning · user guide
WebTV-Learning turns a WordPress site into an online school from a Streamlike account: each playlist becomes a course, each video a lesson. The site welcomes students, remembers their progress, sells courses through Stripe, and leaves the author in charge of the catalogue. This guide walks the site administrator from installation to the first sale. No programming knowledge is needed.
You need:
The plugin works with any theme and with page builders such as Oxygen or Elementor.
Two principles to remember.
Your pages never contact Streamlike: the plugin fetches the catalogue from the admin area and keeps it in WordPress; a change made in Streamlike only shows after a refresh. And the money from sales goes straight to your Stripe account: the plugin never touches a payment.
webtv-learning.zip file, then Install Now and Activate.What that key is for. Receiving updates. WordPress will offer them in Dashboard → Updates, exactly like those of your other plugins: a badge, a button, done. With no key entered, the plugin works normally — only automatic updates stop, and you will have to replace the folder by hand to change version.
That key has nothing to do with your Streamlike API key. One opens your video catalogue, the other your updates.
A caching plugin (WP Rocket, LiteSpeed, WP Super Cache, W3 Total Cache…) or a service such as Cloudflare stores your finished pages and serves that same file to everyone. That is what makes a site fast, and there is nothing to change: WebTV-Learning speaks up for itself.
Pages that depend on who is looking — those of a logged-in student, the cart page, the return from checkout — ask not to be stored. The rest, the catalogue first of all, keeps being served from the cache.
⚠️ One thing only to check in your cache: that it does not store pages for logged-in people.
That is the default in every serious plugin, often called "do not cache for logged-in users". If you had turned it off, a student could receive someone else's page: another first name instead of theirs, their paid lessons shown locked. That case the plugin cannot catch — when a page comes from the cache, no code runs at all.
In WebTV-Learning → Settings, Streamlike access section:
The key never leaves the server.
It is only used by the admin area to read your catalogue. It is never sent to visitors' browsers. Once saved, it shows masked; leave the field empty to keep it.
At the top of the same tab, a Set up the site section appears for as long as a page is missing. It creates the ones the plugin needs — Our courses, My account, and My cart if you sell several courses at once —, puts the right block in each and names them in the settings. All you have left to do is dress them up.
Three things to know:
Once the site is set up, the section disappears. It is there to get you started, not to clutter.
“Our courses” can become your home page.
If your catalogue fits on a single page and you do not want a separate shop window, go to WordPress Settings → Reading, choose “A static page” and set Our courses as the home page. Leave it named as the catalogue page under Cards and thumbnails: the “browse the courses” links will simply come back to the home page.
Two pages or one, both set-ups work. A separate home page tells a story — a headline, three featured courses, your offers, a positioning test — and sends people to the catalogue to see everything. That split sells better as soon as the catalogue goes past a dozen courses.
In the editor, the + button then the Patterns tab → WebTV-Learning category: eleven ready-made pages, to drop in and adjust. A full training provider's home page, a headline band, three key figures, featured courses, your offers, the trainer's presentation, a call to action, and the pages for the catalogue, the tests, the account and the cart.
They impose structure, never colours: spacing, columns, heading hierarchy. That is deliberate — a composition that forced its own shades would clash with your theme, this one slips inside it. The texts are credible examples to replace as you read them, rather than a blank page to fill.
Once dropped in, a composition is just a run of ordinary blocks: remove some, add some, nothing ever takes you back to the model.
The Appearance panel colours the blocks. But on one and the same page, your catalogue followed your palette while the theme's buttons kept theirs — and that mismatch is what makes a site feel unfinished.
In Appearance → Colours, at the bottom, the Extend this palette to the whole site box fixes it: the buttons and links of the whole site take your accent, and your four colours join the palettes offered in the editor.
The box is offered only to modern themes, the only ones that expose their styles to WordPress. With a classic theme or a page builder, the colours apply to the blocks and the rest is set in the theme.
Everything below is done in the Streamlike back office and reaches the site at the next refresh. Nothing is mandatory: the plugin has a fallback for every case. But preparing your videos well avoids redoing everything by hand in WordPress.
The video's name becomes the lesson title. A file name such as 10_archive_SD_card is made readable, “Archive SD card”, but a real title is better. A leading number in the name, 1_…, 2_…, 10_…, gives the order of the lessons. Streamlike does not always keep the order of a playlist: videos added in one go all share the same position. The number rules.
A playlist may hold several numbered series, a course uploaded in 2022 and a “1 to 11” supplement uploaded in 2024: the plugin recognises the series by their upload dates and puts them one after the other, without mixing them.
A tag or a custom field set on a video says what it is. The names looked for are set in Settings → Streamlike labels; case and accents do not matter.
| Label | Default | Effect |
|---|---|---|
| Trailer tag | teaser | The video presenting the course: first in the programme, marked “Introduction”, watchable by everyone, not counted as a lesson. Without a tag, an unnumbered video whose title is the course title plays that role. |
| Free lessons tag | gratuit | A lesson watchable without buying, inside a paid course. Those are your previews. |
| Chapter field | chapitre | A custom field whose value is the chapter name: lessons carrying it are grouped under that heading in the programme. |
The video's description shows under the player during the lesson. The video's thumbnail is used in the programme, and the first lesson's serves as the course image until you choose one in WordPress.
On the site, a paid lesson is hidden from whoever has not bought. But hiding is not protecting: the video stays playable by anyone who knows its address. To make it really inaccessible, enable token protection in Streamlike on your paid videos. The site then issues, at each playback, a token valid for a few hours, bound to the student's browser, after checking their right. That is the only lock that holds.
⚠️ Do your videos also serve another site?
Token protection is set video by video, in Streamlike, and applies everywhere the video is shown. Another site embedding a plain Streamlike player — a former training site, a showcase page — would then see its players refuse to play, for everyone. In that case: only enable the token on videos served by WebTV-Learning alone, course by course; and right away, enable Streamlike's domain protection instead (Security → referrer), which limits playback to your sites without breaking anything. Always try on a single video before generalising.
Each course is a WordPress content like any other, in WebTV-Learning → Courses. It has its own address, such as /courses/my-course/, and SEO plugins treat it as a page.
Course addresses are set in the plugin, not in WordPress permalinks.
The WordPress Permalinks setting only affects posts: adding%category%there changes nothing for courses. To get/courses/my-category/my-course/, choose that form in Settings → Course page → Course addresses. A course without a category takes “misc”. Addresses of the other form redirect to the right one: a link already placed does not break. Do not change it once the site is indexed.
The list can be filtered by category and by price (free, paid, or discounted, to follow a campaign and remove discounts in one go), as well as by date; a Price column shows the price, struck through and discounted when applicable: pick from the menus above the list, then click Filter. A category link in the right-hand column does the same in one click.
Click a course title to open it. You find:
A trashed course is not recreated.
Also untick its playlist in the settings, otherwise every refresh will flag it. Restore it to get it back as it was.
The Lessons box, under the course text, shows every video of the playlist in the order of the programme. What you do there overrides Streamlike and survives refreshes; a lesson added in Streamlike lands at the end of the list.
⋮⋮ handle, or click the ▲ ▼ arrows. A click with the Shift key sends the row to the very top or bottom.When the list is long. Above the box, a Search a lesson field shows only those whose title — yours, Streamlike's, or its tags — contains what you type. Ordering is suspended during a search: arranging a list you only see a third of would mean nothing. Empty the field to get the whole list and drag-and-drop back.
Every section title carries a ▼ chevron and the number of lessons it covers: click it to fold the whole block. Fold everything leaves only the titles — a hundred and fifty lesson course then fits in one screen. A folded section takes its lessons along when you move it, by the handle as by the arrows.
Save with Update, at the top of the screen.
Under each lesson's title, a Summary field: one sentence saying what is learnt there. It feeds the course contents, and nothing else for now — but it is what separates a list of titles from a table of contents people actually read.
Left empty, the site takes the Streamlike custom field if you have set one under Settings → Lessons → Summary field, then, failing that, the start of the media description. The grey text in the field shows what will appear: you do not have to remember the rule, you can see it.
Suggest the missing summaries, at the foot of the box, has the AI write them from each video's transcript — the one Streamlike keeps with the media. A single call for the whole course, so the summaries resemble one another: in a table of contents, it is the sameness that reads. They land in the empty fields only, never over what you wrote, and nothing is saved: you read them, you correct them, you update the course. A lesson with neither transcript nor description is left aside, and the screen says how many. The button only appears when an AI key is saved.
Copy the link, on a row, puts that lesson's direct address on the clipboard. Copy the contents, at the foot, does the same for all of them: a list of titled links with their summaries, in the order shown, hidden lessons excluded, ready to paste into the course description. A lesson's address is the course's followed by its identifier: nothing to go and collect click by click.
With a classic theme or the block editor, a course page composes itself, after your text: the key facts, the purchase, the player and programme, the instructor, other courses. Nothing to do.
Your text can hold whatever you like, including other blocks: a free quiz ([wtl_quiz]) to take stock before buying, the subscription offer, a selection of courses. The page still composes itself underneath. It only steps aside if you place a course block yourself — [wtl_cours], [wtl_reperes], [wtl_achat], [wtl_formateur] or [wtl_autres_cours]: that is the sign you are composing the page your own way.
The key facts strip, at the top of the page, shows duration, lessons, level, prerequisites, language, price, chapters and update date. Settings → Course page chooses which. A fact without a value stays absent: no level if the sheet gives none, no price if the course is free, no chapters with a single section. A shortcode can do otherwise, in its own order: [wtl_reperes elements="prix,duree,lecons"]. Its look is set in the Appearance tab, Key facts section.
The programme, the lessons column next to the player, is set in the same place: what it shows besides each lesson's title, numbers, thumbnails, durations, pills, section titles, progress bar, and its place, to the right of the player, to the left, or below across the full width. On small screens it always moves below. A shortcode can do otherwise: [wtl_cours programme="gauche" programme_elements="vignettes,durees"]. Its look is set in the Appearance tab, Programme section.
The contents, finally, is a brick to place in a course's own text: the list of lessons, each one clickable, with its summary and duration. It is the only structure a search engine can read on a course page — the programme is built by the browser, and the page's source shows nothing of it. The “Course contents” block in the editor, [wtl_sommaire] everywhere else.
It comes as a plain list or as cards, with the number of columns you want: [wtl_sommaire allure="cartes" colonnes="2"]. Three switches remove what you do not want — resume="non", duree="non", vignette="oui" — and titre="The episodes" puts a heading above. A link in the contents opens that lesson in the player without reloading the page. As cards, the look follows the Appearance tab, Cards and thumbnails section, like the catalogue cards.
Each lesson's summary is written in a course's Lessons box, under the title. Left empty, the one from Streamlike is used if you have set a custom field, then the start of the media description. And if an AI key is saved, the Suggest the missing summaries button writes them from the videos' transcripts: they land in the empty fields, you read them, you correct them.
A single lesson can be placed too, as a card, between two paragraphs: the “Lesson (card)” block, or [wtl_lecon lecon="2"]. The lesson's number is enough; its identifier works too, and does not move if you reorder. bouton="Listen to the episode" adds a button under the card. It is the same card as in the contents, so the same look.
A course in another language. A course sheet carries its language, taken from the video at refresh time. It is used twice: it tells the AI which language to write lesson summaries in, and — if you tick Label language under Settings → Course page — it also writes the page's labels in that language. The rest of the site does not move. Without the box ticked, everything stays in the site's language: the field states the language of the content, not of the page.
Create a page and place the [wtl_catalogue] shortcode in it: the grid of published courses, with image, title, level, excerpt, price, number of lessons and duration. Above it, a filter bar, whose content is chosen in Settings → Cards and thumbnails, “Filters above the catalogue”:
The price filter also offers “Discounted” as soon as a course is. A count of the courses shown follows the filters.
The words are yours. Settings → Cards and thumbnails → Catalogue labels opens the list of the bar's texts: the search field, “Categories”, “All”, “Price”, “All prices”, “Free”, “Paid”, “Discounted”, “Sort” and its five orders, “Previous”, “Next”, and the “In my courses” mark. Each field shows the original text in grey; type only the ones you want to change, “Deals” instead of “Discounted” for instance. An emptied field goes back to the original text. Category names are changed in the Categories menu.
Large catalogues paginate: Settings → Cards and thumbnails → Courses per page sets the number of courses per page, zero to show everything. Beyond it, page numbers, Previous and Next appear below the grid, without reloading, over the courses left after the filters; a filter change goes back to the first page, and the chosen page is written into the address. In rows, pagination only applies when a filter gathers the results into a grid. Attribute par_page="12". Their alignment, and their presence above the grid too, are set in the Appearance tab, Filters section; they take the look of the filter buttons. Filters sit above the catalogue, as a bar, or in a column on the left, with the number of courses per category; on small screens, the column moves back above. Attribute filtres_position="gauche" or "haut".
A filter only shows when it has something to filter: at least two categories, both free and paid courses. The three combine. When nothing is left, the page says so; if a category or a price is the cause, a button offers to search the whole catalogue while keeping the typed text. In rows, an active filter gathers the results into a single grid, without category titles; the rows come back when it is removed. A shortcode can choose: [wtl_catalogue filtres="categories,prix,recherche"], or filtres="non". The look of the buttons is set in the Appearance tab, Filters section.
The catalogue comes in two layouts, chosen in Settings → Cards and thumbnails:
A shortcode can choose: [wtl_catalogue disposition="rangees"] or disposition="mosaique". A category page stays a grid: a single row would not be one.
The chosen filters are written into the page address: …/courses/?categorie=audio, ?prix=gratuit, ?recherche=motion, alone or combined. That address opens the grid already filtered; put it in a menu, a link or a newsletter. The name after categorie= is the category's slug, shown in WebTV-Learning → Categories. The short form …/courses/#audio works too.
SEO: the category page, not the filter.
For a search engine,…/courses/?categorie=audiois the same page as…/courses/: handy for your visitors, no effect on ranking. What gets indexed is the page of each category, which WordPress creates by itself at…/course-category/audio/, with its own title. Place[wtl_catalogue]there — in your theme's archive template, or in a builder template applied to course categories — : the grid restricts itself to the page's category, without buttons. A description entered on the category becomes that page's text.
For a “video of the month” or “courses not to be missed”, the [wtl_selection cours="128,131" titre="Not to be missed"] block shows the courses whose id you give, from any category, in the order you give them, with the same cards as the catalogue. The id is in the ID column of the course list, and each course sheet shows the shortcode ready to copy, under the number of lessons. The course's address name works too. A draft course or one without lessons does not appear.
A logged-in student recognises at a glance the courses they already have, bought or offered: an “In my courses” mark on the image, and in place of the price, with their progress. It can be switched off in Settings → Cards and thumbnails. A visitor only sees prices.
Settings → Cards and thumbnails chooses what a catalogue card shows, image, title, level, price, excerpt, lessons and duration, and the price or “Free” as a label on the image, useful when the text band only shows on hover, and what an other-course thumbnail shows. A shortcode can do otherwise with the elements attribute: [wtl_catalogue elements="image,titre"] for a grid of titled images, for instance. In the same place, The cards' text band is always shown, under the image, or on hover only: it then settles over the bottom of the image. On a touch screen, it stays visible. Attribute bande="survol" or bande="toujours". The look of cards, background, text, title size, radius, is set in the Appearance tab, Cards section.
In the same place, the other-courses block, the thumbnails below the player or on the home page: its title, or, with no title typed, “My other courses” or “Discover also” depending on the case, the number of thumbnails, and which courses: the student's, the site's other courses, “to buy”, that is the paid courses the student does not have yet, or automatic. The course being watched never appears in it, nor those the student owns when the source is the catalogue. A shortcode keeps the last word on a given page, and can filter: [wtl_autres_cours source="promo" categorie="meme" ordre="prix" titre="Go further"] offers the paid courses of the same categories as the course being watched, cheapest first. categorie also accepts category slugs, prix is “gratuit” or “payant”, ordre a criterion from the Course order tab. Its look is set in the Appearance tab, Other courses section.
Settings → Course order sorts the catalogue grid and the category pages: by title, newest first, by category then title, free ones first, from cheapest to most expensive, or by hand. In rows, the order applies within each row. For the manual order, drag the courses in the list, or click the arrows, Shift for the top or the bottom, then save. A shortcode can impose its own order: [wtl_catalogue ordre="date"], ordre="titre", ordre="categorie", ordre="gratuit", ordre="prix" or ordre="manuel".
Further down the same tab, the order of categories: that of the catalogue rows and of its filter buttons. Drag them the same way. A category never arranged comes after the others, alphabetically.
Create a page containing [wtl_compte] and set it in Settings → Students. A visitor finds login and sign-up there; a logged-in student finds their area, in panels:
With Oxygen, Elementor or another builder, do not edit each course one by one: make one template for the “Courses” type. Two ways to fill it:
Both combine: every block you place in a template replaces its automatic version, the others keep coming through the Inner Content. In the builder's editor each block shows a mockup, roughly its size; the real block shows on the published page.
The Settings → Course page setting can force it: always compose, or never place anything automatically.
⚠️ A course opened in Oxygen without placing any block shows empty.
Oxygen replaces the page with its design, empty at first. Place at least[wtl_cours]in it, or remove that design. The To complete tab flags these courses.
A block can be placed in two ways: as a WordPress editor block, or as a shortcode, which works everywhere else. Both do exactly the same thing — the editor block simply saves you the typing.
In the editor, open the block inserter and look for WebTV-Learning: all nineteen blocks are gathered there. You can also type / followed by the block name, for example /catalogue.
Once placed, a block's settings are in the sidebar on the right: drop-down menus, checkboxes, and the list of your actual courses, categories and packs — no more numbers to copy out.
A block you leave alone follows your settings.
Every setting in the sidebar starts at "Same as the site settings". As long as you leave it there, the block behaves exactly like the bare shortcode, and a change made later in the settings shows on the page at once. Only fill in what you want to do differently here.
In the editor a block shows as a mock-up: a drawing at roughly its size, with its name. That is normal — the real block needs the public page to work. Use the WordPress preview to see the result.
The Patterns tab of the inserter offers four ready-made pages, under WebTV-Learning:
| Pattern | What it places |
|---|---|
| "Our courses" page | A heading and the catalogue |
| "My account" page | A heading and the student's area |
| "Cart" page | A heading and the cart |
| Home page | The packs, a selection of courses, the subscription offer |
Once placed, a pattern is nothing but ordinary blocks: remove, add, move whatever you like. Nothing will ever take you back to the model.
There is no pattern for a course page, and that is deliberate: that page already composes itself (see The page of a course). Placing the blocks there by hand would switch that automatic composition off.
Everywhere else — Oxygen, Bricks, Divi, Elementor, a widget, a theme template — the block is written as a shortcode, in a Shortcode block or a Shortcode element. On a course page the id attribute is useless: the block takes the page's course. Elsewhere, give it the course number or its playlist identifier.
| Block | What it shows | Attributes |
|---|---|---|
[wtl_cours] | The player, the current lesson, the programme | id, enchainer="non" not to start the next lesson at the end, programme="gauche", "droite" or "dessous", programme_elements="numeros,vignettes,durees,pastilles,sections,progression" |
[wtl_reperes] | Duration, lessons, level, prerequisites, language, price, chapters, update date | id, elements="prix,duree,lecons" |
[wtl_achat] | The price and the buy button, or “Free”, or “You are following this course” | id |
[wtl_formateur] | The course author: name, photo, bio, website | id |
[wtl_selection] | Hand-picked courses, from any category, in the given order | cours="128,131" (ids, ID column of the course list) or address names; titre="Not to be missed"; colonnes (none: as many as courses, four at most), elements, bande as the catalogue |
[wtl_autres_cours] | Thumbnails to other courses | source="mes" (the student's), "catalogue" (the others), "promo" (paid, not yet owned), "auto"; nombre up to 24; titre; categorie="meme" or "editing,sound"; prix="payant" or "gratuit"; ordre="prix", "titre"…; elements="image,titre,detail" |
[wtl_catalogue] | The grid of courses | colonnes, categorie="editing,sound", filtres="non" or "categories,prix,recherche,tri", filtres_position="gauche" or "haut", par_page="12", ordre="titre", "date", "categorie", "gratuit", "prix" or "manuel", disposition="mosaique" or "rangees", bande="toujours" or "survol", elements="image,titre,niveau,prix,extrait,detail" |
[wtl_compte] | Login and sign-up, or the student's area | — |
[wtl_inscription] · [wtl_connexion] | One of the two forms only | — |
[wtl_pack_achat] | A pack's panel: struck-through value, price, saving, buttons. Or the top-up, for those who own part of it | id (pack number or slug) |
[wtl_pack_cours] | The cards of a pack's courses, under a title | id, titre="In this pack" or "non", colonnes, elements |
[wtl_pack] | The two above, one after the other | id, titre, colonnes |
[wtl_packs] | The cards of your packs | titre="Our packs", colonnes, disposition="mosaique" or "rangee" (one scrolling row, with its arrows), nombre="3", ordre="recent", "titre" or "prix", packs="94,93" to show only some, in that order |
[wtl_panier] | The courses in the cart, the totals, one payment for all | titre; catalogue="12" (page number or address) for the empty-cart link, otherwise the catalogue page set |
[wtl_compte_bouton] | For a header: “Hello Alain” with the link to My account when the student is logged in, “Log in” otherwise | texte="Hello %s" (%s becomes the first name), invite="Log in", deconnexion="oui" for a “Log out” link next to it |
[wtl_abonnement] | The subscription offer and one button per plan; for a subscriber, the status of their subscription and the link to manage it. Nothing if the subscription is not offered | none |
[wtl_quiz_liste] | The public list of your tests: one card per quiz, with its image, its introduction, its number of questions and a button to its page. Enough to build a “Our tests” page for your menu | quiz: the wanted numbers separated by commas, in that order (empty: every published quiz) — in the block, you pick them by title; colonnes: 1 to 4 (2 by default); titre: a heading above; bouton: the button wording |
[wtl_quiz id="12"] | A free quiz, outside any course: the welcome, the questions, then the score, the score per theme, your message and what you advise | id: the quiz number, copied from its screen; titre: another title, or non for none; texte="non": no introduction; bouton: the start button wording |
[wtl_panier_bouton] | The link to the cart with the number of courses, for a header or a menu | texte="My cart" |
The instructor is the WordPress author of the course: their display name, profile picture, bio and website come from their account, in Users → Profile. One site, one author: nothing to retype.
colonne="2" works like colonnes="2", element like elements. An attribute the block does not know is ignored.[wtl_autres_cours] of different sources are accepted.[wtl_reperes] on a page that is not a course, without id, shows nothing.Sign-up is free, with or without buying: e-mail address, password, first name or nickname. It serves free lessons as well as bought courses. The student becomes a WordPress user with the Student role, which gives access neither to the admin area nor to its bar.
The sign-up form has a box, never pre-ticked, whose text is set in Settings → Students → Consent text. The accepted text and the date are kept; the student can change their mind in their preferences. That is what allows you to write to them.
A logged-in student finds their progress on all their devices: watched lessons are marked, the current lesson resumes where they left it, and the next one follows at the end. A visitor without an account has the same, but in their own browser only.
Settings → Students lists your students: address, sign-up date, e-mail consent, number of courses followed, last activity. Above the table, a search field and menus (e-mailing, activity) narrow the list; a click on a column heading sorts it, a second one reverses it. It all happens in the page, with no reload, and the export stays complete. Two exports: consenting addresses for your e-mailing tool, and every student's tracking, one line per student and course, with lessons watched, last activity, quizzes and the time actually watched when it has been measured.
The Tracking button opens a student's sheet: each of their courses, lesson by lesson, with two measures side by side.
Who is dropping out? Past a given number of days without activity, a tag flags the learner in three places: this list, their group's tracking and their sheet.
The delay is set in Settings → Flag a drop-out: 14 days by default, 0 to flag nothing at all. Three cases never raise the tag: a finished course, a brand-new access, and a learner who came back more recently than the delay — a single visit clears it. The site sends no e-mail: it shows you who to follow up with, you write.
The "to chase" list. Hunting for tags in a twenty-row table gets tedious fast. Two screens therefore pull the drop-outs out of the crowd:
The panel only shows when there is someone to chase, and disappears when you set the delay to 0.
Streamlike's measure is read on demand, course by course, with a click on Read Streamlike's measure: a few seconds, a little more for a long course. It is kept with its date. Streamlike takes a few minutes to consolidate its figures: a very recent playback is best read a little later. A ⚠ sign marks a lesson the site sees as far more advanced than Streamlike does, or even “watched” while Streamlike played nothing: the cursor was probably moved. The sheet can be exported, lesson by lesson, with both measures, how it was watched and the quizzes.
The three figures complement each other: Streamlike says which share of the lesson was seen and is not fooled by a dragged cursor, but it counts in video time, so a lesson watched at double speed looks fully seen to it; the site says how long the student spent on it and how; the quiz says what they retained. None of these measures proves attention: a video playing in a hidden tab counts as played.
The three measurements above assume a signed-in student. On a free, open course — a podcast, a demonstration — nobody signs in: progress lives only in the visitor's browser and never comes back. The only place that knows how many people listened is the player.
Settings → Audience fetches those figures from Streamlike, lesson by lesson: plays, viewers, sessions, time watched, the share that was played again, and the share of the lesson one person heard on average. Two periods, the last twelve months or all time, a search field and sortable columns. The figures are collected when you click, never in the background, and the date of the reading is shown.
One warning is written on the screen rather than left to be discovered: plays are a running total since the video was created, so they ignore the chosen period — unlike every other column.
An access is personal, but nothing stops a student — or a training centre that signed up as one — from handing their login to ten people. The simplest answer is in Settings → Devices per account: how many devices may be logged in at the same time, 2 by default. Beyond that, the oldest session closes. One person's phone and computer bother nobody; an access shared with fifteen people becomes unusable, each one kicking the others out. At 0, no limit. You and the people who manage the site are never affected.
Their record also shows, under a Positioning tests heading, the free quizzes they took while logged in: attempts, latest score, best score, date. They appear in that student's CSV export too, as rows marked test in a new last column — type — the other columns having stayed put. A student who came through a test, with no course started yet, now has a record to read instead of “nothing yet”.
The student sees their devices in My account → My preferences, with a Close the other sessions button — the list names each device's browser and system ("Chrome on macOS", "Safari on iPhone") and marks the one they are looking from: that is what to do when you have lent your password and regret it, before changing it.
This setting protects the account. It does not protect the video itself: as long as a lesson is not token-protected at Streamlike, the page only hides the player, and its address still plays elsewhere. See "Really protecting the videos". And no setting will ever stop someone filming their screen.
Whoever can edit a course, you, reads all its lessons without buying. To check a page as a student without access will see it, locks and buy button included, untick Settings → Administrator → The author and the administrator see every lesson. Students are never affected by this setting.
When a training centre sells your course with a few hours of tutoring, two people need to follow the learners without entering your admin area: the tutor, who prepares the sessions — often you, the author —, and the manager on the centre's side, who wants to see how the learners they sent are doing. Groups are for that.
As long as you create no group, nothing changes. If you are at once the author, the tutor and the administrator, you don't need them: you already see everything.
In WebTV-Learning → Groups → Add a group:
A group follows all the courses of its students, not a chosen list.
A My groups tab appears in their My account area. They never enter the WordPress admin area, and see neither your sales, nor your settings, nor other groups, nor the site's other students.
For each group: the list of students with each of their courses and its progress — the most recently followed first —, the date of their last session and their number of sessions. Enough to spot at a glance who is dropping off. A group can bring together students on different courses: each one is followed in their own. Then, for each student, their sheet.
An Export the group's tracking button gives a CSV file, one line per student and per course, to carry over into your training-management tool.
Course by course, it answers the questions you ask yourself before a tutoring session:
A session is a period during which the student watches without stopping for more than thirty minutes: a student who comes back twenty times has twenty sessions.
Sessions are only recorded from version 0.22.0.
Before that, the site only kept the first and last date of each lesson. An older student may therefore show an empty pace before that date: the sheet says so, so that a gap is not mistaken for an absence.
The "According to Streamlike" column shows the last measurement you read back.
Streamlike's measurement is read on demand, from the student's tracking sheet in your admin area: the tutor and the manager cannot trigger it themselves. Until it has been read, the column stays empty.
A student in a group also sees the My groups tab: the name of their group and the links open to them. They never see the other students of the group, nor their progress, nor the links reserved for the tutoring team. The server enforces this rule: an address edited by hand shows nothing more.
The manager, the tutor and you can attach links to a group: an attendance sheet, a shared folder, the tutoring video call. Each link is for the whole group, for the tutoring team only, or for one student only — an attendance sheet in their name, the signature link your management tool sent them. A student sees the links for the whole group and their own, never a classmate's. Their personal documents also appear at the top of their sheet.
If a student leaves the group, their personal links become "tutoring team only": they do not become visible to anyone else.
A link can also be tied to a course. A student who takes Photoshop and Illustrator has two attendance sheets, one per course: each appears under its course in their sheet, and carries the course name in their area. A link tied to a course only reaches the students who follow it: the Illustrator cohort agreement, even "for the whole group", is not shown to the student who came for Photoshop. With no course chosen, the link applies to all. When the link is for a single student, the course list only offers that student's courses.
Only addresses starting with https://, mailto: and tel: are accepted. The document stays where it lives, with its own access rights: the plugin keeps only the link.
For a funded course (OPCO, Qualiopi in France), a training centre must measure where the learner stands on entry, then what they have acquired on exit. The site does it with the same questionnaire, taken twice, and compares the two results.
With nothing set, nothing appears: a student who buys a course directly, or a group that doesn't need it, never sees an assessment.
Preparing the questionnaire. It is an ordinary free quiz (WebTV-Learning → Free quizzes). Give each question a theme — the name of a skill, "Text frames", "Styles": you get a score per skill on entry and on exit. If the quiz draws only some of its questions at random, entry and exit won't necessarily ask the same ones: for an exact comparison, don't draw.
Setting it on the group, in the group screen (Entry and exit assessment box) or from My account → My groups for the manager and the tutor. One row per course followed in the group:
Below the table, tick the exempted students: those whose course is not funded, if the group mixes both. They see no assessment.
What the learner sees. A notice at the top of the course page and in My groups: "Entry assessment, to take before you start". Once the entry is taken, as long as the exit isn't open, the course page recalls it discreetly: "it will open once you have completed 80% of the lessons (you are at 35%)", with the end-of-session date if there is one. It blocks nothing: whatever the score, the lessons stay open. On entry, they see their score but not the right answers — they'll take the same test again. On exit, they see the full correction, with your explanations, and their entry score next to the new one. One attempt each.
What the supervisors see. In the group view, an Entry → Exit → Progress table for each student and each course. In the student's sheet, the detail per skill and the trace of each attempt: "taken when the course had already started (30% of lessons completed)" for a late entry, "started by the learner themselves, at 85% of the course" for an exit. The other ways it can open: at the course threshold, by the supervisors, on the end-of-session date.
From the sheet, the manager or the tutor can open the exit now (after the last tutoring session, for instance), cancel that opening, or reopen an attempt after a mistake. A reopened attempt is not erased: it stays in the sheet's history, with who reopened it and when.
The group export (CSV) carries both attempts: dates, scores, course progress at each attempt, how the exit was opened (eleve, seuil, tuteur, date), progress and skills. It is the document for the Qualiopi file, or to import into your training-management tool.
When a learner is erased. If they ask for their data to be erased, or their account is deleted, their funded-course record is not lost: it is filed in the group as it stood that day — tracking, sessions, assessments — then the rest is erased. The supervisors find it in My groups, Archived records section, and in the group export (archive_le column). See Settings → Maintenance → Supporting records for funded courses and the Privacy section.
Qualiopi asks training centres to collect learners' appreciation. The site does it right at the end, when the learner finishes: it is the safest moment, a questionnaire sent later is often ignored.
Preparing it, in WebTV-Learning → Appreciations. The simplest way: Create from the template — objectives met, clarity of the content, the tutor's support, ease of the platform, pace and length, recommendation, and two open questions. You then adjust it. Four kinds of question: scale from 1 to 5 (from "not at all" to "absolutely"), choice, yes / no, free text. No right answer: it is not a quiz.
Anonymous or named, chosen for each questionnaire. Anonymous (the starting setting): you know who answered, not who answered what — the answer only keeps the month. Named: each answer carries the learner's name, so you can follow up on a complaint. The learner is told in both cases. In a very small group, anonymity is relative, as with a paper questionnaire.
Setting it on the group, in the same table as the assessment, Appreciation column. It is offered right after the exit assessment; with no assessment set for that course, at the course threshold or on the row's end-of-session date. A "Your opinion of the course" notice announces it on the course page and in My groups. It is never compulsory, and is filled in once; every question is optional.
The results, in the group view, Learners' appreciation section: the response rate, the satisfaction rate (the share of 4 or 5 answers on the scales), the average and spread of each question, the comments. A button exports the answers as CSV, without names if the questionnaire is anonymous. The learner's sheet says whether they gave their opinion, and the tracking export carries the date (appreciation_le column).
The tutoring sessions themselves — their reports, the attendance sheets — are kept in your training-management tool (Digiforma, for instance). The site gives you what you need to prepare them and an export; it does not keep a second register.
Each course can offer a quiz per lesson, an end-of-course quiz, both, or none: the choice is made on the course sheet, Quiz and path box, below the Lessons box.
In the box, each lesson has its panel, plus a “Knowledge assessment” panel for the end of the course. Above the list, a search field and a Fold everything button save you from scrolling a hundred panels to find one. Open a panel, + Question, then:
At the top of each quiz, as soon as it has two questions, the random draw: “At each attempt, ask 10 questions drawn at random from the 25”, and two boxes to shuffle the order of the questions and the order of the answers. A second attempt is no longer a copy of the first: nobody memorises “number 3 is B” any more. Leave 0 to ask every question.
Arrows reorder questions and answers. Save with Update. A question without wording, with fewer than two answers or without a correct answer is not kept. Correct answers never leave the site: the page sends the student's answers, the site corrects.
Below the player, after the lesson description, the Lesson quiz, which appears once the lesson is watched, that is played up to the percentage set for the path. They answer, validate, and see their score, correct answers in green, their mistakes struck through, the explanation if any. A Try again button. A question with several correct answers earns partial credit: each correct tick counts, each wrong tick takes as much away, never below zero.
Before and after. In the Quiz and path box, “The lesson quiz is played” can be before and after: the student answers once before watching the lesson, and then only sees their score, right or wrong per question, without correct answers or explanations. Once the lesson is watched, the quiz comes back; this time the correction is complete, and the page shows both scores and the progress. That progress is what proves what the lesson brought: it appears in the results export. Only the after pass counts for passing, the overall score and attempts. When a video ends and its quiz is not yet passed, the page shows it instead of moving on to the next lesson. The end-of-course quiz appears after the last lesson, and the programme leads to it through an “End-of-course assessment” entry. In the programme, a “Quiz” pill marks lessons that have one, “Quiz ✓” once passed.
A band above the player invites the student to answer first: “Before you begin: three questions, to measure what this lesson brings you.” It locks nothing — the lesson starts whenever they like, the same rule as the entry assessment — but without it, people start the video without knowing they have just lost their starting measurement. It clears as soon as the entry quiz is done, and as soon as listening has really begun. And every entry attempt now records how far the lesson had been played: an entry taken at 85% of the lesson is no longer measuring an entry, and both the tutor's sheet and the export say so.
With an account, each attempt is kept with date and score; the best score counts. The My account page shows the course's overall score: the average of the best scores of each quiz, a never-attempted quiz counting zero. Without an account, the quiz can be played and corrected, but nothing is remembered; Settings → Quizzes and path can also reserve quizzes for logged-in students.
Settings → Quizzes and path sets for all courses the pass mark in percent, the number of attempts per quiz, unlimited or not, and what visitors without an account get. The pass mark can be adjusted per course in the Quiz and path box.
Correct answers and explanations: by default, they are only shown once the quiz is passed, or on the last allowed attempt. Before that, each question only says right, wrong or partly: a missed answer cannot be guessed on the next go, a missed true or false does not become obvious. You can also show them after every attempt, or never. In every case, correct answers only leave the site when the setting allows it.
Free, the student follows lessons in whatever order they like. Enforced, lesson 1, then 2, then 3: a lesson only opens when the previous one has been watched up to the set percentage and its quiz, when it has one, passed. The student sees a padlock and the message “Finish the previous lesson first”. The introduction always stays open, and the administrator who “sees everything” is not blocked. The path is set for all courses in Settings → Quizzes and path, and adjusted per course in the Quiz and path box of the course sheet, “Student's path” line. It only applies to a logged-in student: without an account, nothing can be checked. For a funder who requires complete viewing, set the percentage to 100.
Settings → Students, Quiz results section: per student and per course, the overall score, the number of quizzes passed, the last attempt. The Export results (CSV) button gives a file with one line per student, per course and per quiz, best score, attempts, passed or not, last date, score before the lesson and progress when the quiz is played before and after, then an overall score line per course. It opens in Excel or Numbers; it is the basis of a report for a funder.
In Settings → Quizzes and path → Quiz display, for every course quiz:
In a course's screen, under the quizzes, the Success per question panel appears as soon as students have played: for each question, how many times it was asked and the share of right answers, in red under 40%. A question almost everybody misses is badly worded — or the lesson needs rework. The figures start with version 0.17.0 and follow the rank of the questions: they get blurred if you remove or move some.
Above it, the What your quizzes tell you panel gives, quiz by quiz: the number of attempts, how many came from visitors who are not signed in, the average score, the score at entry and the gap between the two — that is, the progress. Visitors' attempts have been counted since version 0.63.0: they are counters, no personal data. Before that, a free, open course left no trace of its quizzes, although visitors were answering them. One reservation is written on the screen: for a visitor who is not signed in, the page itself declares whether they are playing before or after the lesson, so the entry score is an order of magnitude, not a measurement.
A quiz that belongs to no course, placed wherever you like: “Test your InDesign knowledge”. Any visitor plays without an account; the result tells them where they stand, theme by theme, and recommends what to do next — a course, a pack, a page of your site, or an address of yours. It is a shop window as much as a teaching tool.
In WebTV-Learning → Free quizzes → Add a quiz:
The draw balances themes. It takes one question from each theme in turn, rather than ten at random: with twelve themes and ten questions drawn, ten different themes come up, and never two from the same one. Before, nearly two draws in three served three or more questions from a single theme — which made the per-theme report misleading.
Give them few themes, and broad ones. Count about one theme per two questions drawn: five themes for ten questions, enough for two questions each and a meaningful “acquired” versus “needs work”. With twelve themes for ten questions, each theme comes up once and its score can only be 0% or 100%. The editor tells you so.
A question's level is a second axis. Base, Intermediate or Advanced, next to the theme — the theme says what the question is about, the level says who it is for. “Text” holds both linking text frames and GREP searching; grading the theme would force you to split it. Once levels are set, the draw keeps your proportions (20 base, 20 intermediate and 10 advanced drawn to ten give 4, 4 and 2), questions are asked from the simplest to the most advanced — which avoids losing a beginner on question one — and the result shows a score per level beside the score per theme. That is what really speaks: “90% of the basics, 50% of the intermediate, 10% of the advanced” states a level, where “70%” states nothing. A quiz with no question graded behaves exactly as before;
The introduction is written in the quiz's editing area, at the top of its screen: it is WordPress's block editor, with formatting, links, images and columns — everything you put there shows above the Start button. The test's card in the list only takes a plain-text summary of it, plus an image: the featured image you set in the right-hand column, or failing that the first image of the editing area. That is the only place to write it. If a quiz still carries text in the old Introduction field, the settings show it with a Move this text into the editing area button: one click, and you can format it. There is no hurry — until you move it, it is what visitors see.
The brick fits your page. When your page already carries a title, titre="non" avoids repeating it; titre="Test yourself" sets another one without renaming the quiz; texte="non" hides the introduction when the page already says it; bouton="Check my level" replaces “Start”. The same settings are in the Free quiz block's sidebar in the WordPress editor.
Publish, then copy the shortcode from the Place this quiz on a page box — [wtl_quiz id="12"] — and paste it into a page, a post or a template of your builder.
**The shortest route: the Create its page button. In a quiz's screen, as long as it is placed nowhere, a button builds the page for you: a page carrying only that test, as a draft**. You read it over, you publish it, and that's it — the test has its address, the list shows it, and your students find it again in My tests. Nothing goes online without you.
One page per test, plus one page listing them. That is the shape that works: one page per quiz, where you place the Free quiz brick, and a “Our tests” page where you place the List of tests brick. The list only shows quizzes placed somewhere — it cannot lead to a page that does not exist. If it stays empty, it tells you so on the page itself, and only you.
You can see what the AI does and what it costs. The settings show the model in use, the reasoning effort — “Quick” is recommended for writing questions, and it is the cheapest — then a running count: requests made, tokens sent and written, estimated cost, and the details of the last one. Those amounts are computed from the published rates the plugin knows: landmarks, not an invoice. Your provider's account is the only figure that counts.
The generator's brief is saved with the quiz. Subject, themes, level mix, audience, prerequisites, context, programme: it all comes back when you reopen the quiz. Asking for a second batch is one click, not a retype — and that is how this is meant to be used, in batches of twenty you read over each time.
The text to draw on has a limit, and it is announced. A counter under the field says how many characters you pasted and how many will be read — 40,000 for the questions, 8,000 for the theme proposal. Beyond that, the rest is ignored.
But do not try to squeeze everything in: a manual is not a good source. It is full of button names and menu paths, and the AI will draw questions from it that measure the memory of an interface, not a competence. Give it one page instead: your main headings, and two or three sentences per part on what has to be understood. That is your course outline — you already have it.
On cost, finally: the source text is not what weighs. Fifty questions cost around twenty cents with a full source, around ten without. What costs is what the model writes, and the model you chose.
Have an AI propose questions. In Settings → WebTV-Learning, section Writing help, paste an AI API key — your own, created on your account with the provider and billed per use. Note: a chat subscription does not give API access, they are two separate products. There is no quota to run out of, you pay for what you use: a set of fifty questions costs from a fraction of a cent to about twenty cents depending on the model.
Once the key is in, a free quiz's editor shows Have questions proposed: you give the subject, how many you want, the themes to use, optionally a level mix, and a source text — your programme, your course outline. The questions land in the paste area, never in the quiz: you read them over, you cut, you keep.
Every proposed question carries its explanation: why the right answer is right, and where useful why the most tempting wrong one is wrong. It has two readers. The person who took the test, if you show corrections. And above all the person reviewing the questions without necessarily mastering the subject — a training assistant, say: the explanation lets them check a question is correct without looking elsewhere. Any question arriving without one is reported, with the count.
Three promises the plugin keeps: the site calls the AI only when you click, it sends it no student data, and it reads the answer before showing it to you — dropping incomplete blocks and duplicates, putting true/false back in order, and shuffling where the right answers sit. A model has the same reflexes as a hurried writer: it readily puts the right answer first. What it does not fix, it reports: the count of true and false statements, and the spread across themes. Those are editorial choices, and they are yours.
Take the quiz's questions back into the area. The button rewrites every question of the quiz into the paste area, in the same format. That is the full round trip: you correct the text in bulk — rename a theme across ten questions, change levels, reread the lot at a glance — then click Replace every question. Nothing is lost on the way.
And every question of every quiz, in one file. The button above knows one quiz only. On the Free quizzes tab, Take back every question downloads the lot as a single text file, in the same format, each quiz announced by a line starting with @. Fix a product name across five questionnaires in one search-and-replace, then paste back quiz by quiz.
It is also the backup you never had: until now your questions existed only in the database.
The return stays quiz by quiz, and that is deliberate: a misread quiz name would replace fifty questions in the wrong place. Open the quiz, paste its part, choose Replace every question — which asks you first.
You can take only some of them: a tick box on each row of the table, and one in the header that ticks what you can see. Search for “Adobe”, tick the lot, export: you get only those. With no box ticked at all, you get every quiz.
Lines starting with @ or // are never read as questions: you can leave the file's header and the quiz names in place when you paste back.
Paste questions written elsewhere. Under the list of questions, a Paste questions written elsewhere panel reads a plain text format and turns it into questions — enough to set fifty without typing them one by one. One question per block, blocks separated by a blank line:
How many spreads does a 4-page facing-pages document have?
# Pages and spreads
- 4
+ 3
- 2
= The first page sits alone on its spread.The first line is the question. Answers start with - (wrong) or + (right); several + make a multiple-choice question. # gives a theme, ^ a level (base, intermédiaire or avancé), = an explanation — all three optional. Two answers written Vrai/Faux (or True/False) make a true-or-false question, in either order. A block with no question, fewer than two answers or no right answer is skipped, and the count tells you. Two buttons: Add to the list, or Replace every question. The questions it creates are ordinary questions: you read them over and edit them in the editor before saving.
This quiz's page. A free quiz has no address of its own: it lives wherever you place its brick, and nothing stops you placing it in several spots. The site finds the pages carrying it by itself — the block as well as the shortcode — and as long as there is only one, there is nothing to set. Placed on several pages, the This quiz's page setting asks which one is its address: that is what a student sees in My tests, and where the public list leads. The Free quizzes tab shows, for each quiz, where it is placed and whether a choice is still needed.
What the quiz tells you, at the bottom of its screen: the number of plays, the average score, the success rate of each question, and what visitors do with the advice — how many clicked the first path, how many the second, level by level. That is the figure that says whether the quiz is working: “fourteen call-back requests this month”. No personal data goes into these counters: clicks are counted, not people. A question everybody misses is badly worded — or it is the subject of your next tutorial. If you remove or move a question, reset the counters: the figures follow the rank of the questions.
All your quizzes at a glance: the WebTV-Learning → Free quizzes tab. One row per quiz, with its questions, plays, average score, clicks on the advice, addresses left, the date of the last play and its shortcode to copy. A search field, a menu to keep only published ones or drafts, and a click on a column heading to sort — the most played, the least successful, the oldest. The title leads to the quiz's screen for the detail. Export this table (CSV) takes it as it stands into a file for your spreadsheet, shortcode included. The search, the filter and the sorting appear from two quizzes onwards: on a single row they would have nothing to work on.
A placement test has neither pass nor fail: no threshold, no attempt limit. The right answers, as everywhere, never leave the site.
Until now a question checked what someone had learnt. It can also be a way in: instead of asking what a person knows, you ask where they stand, and each answer points to the lesson that concerns them. There is no right answer, so no score and no correction — and nobody is failed. That is what you want when you are addressing customers, prospects or the merely curious rather than students.
“Do your learners use AI for their work? I don't know / I suspect so / I know, and I forbid it / I know, and I frame it.” None of those answers is wrong, and each one leads somewhere else.
How you write it. In the quiz settings, the This quiz points to field names the course it leads to. Then, in the questions, an answer that orients starts with ~ instead of + or -, followed by the number of the lesson it advises:
Do your learners use it for their work?
~ I don't know > 1
~ I suspect so > 1
~ I know, and I forbid it > 5
~ I know, and I frame it > 4An answer with no number is recorded and advises nothing — that is allowed; not every answer in an orientation questionnaire has to lead to a lesson. You type a number, the site remembers the lesson itself: reordering the course later will not shift your answers onto the wrong one.
A quiz marks or orients, never both. The mode is not a setting, it is deduced: a quiz whose every question says where its answers lead is an orientation quiz. Until the count matches, the settings box says so in as many words and the quiz keeps marking.
What the person sees: no score, but the course summary put back in the order that concerns them, the advised lesson first and highlighted. The whole summary, not just that one: you recommend a starting point, you do not lock anything. Two lessons advised equally keep your course's own order.
Only one row is highlighted, the one to start with. If four questions each point to a different lesson, highlighting them all would teach nothing and the eye would have no way in. The others keep the advised order, and a lesson pointed to by several of your answers says so next to its title.
For a clear-cut recommendation, make your answers converge. Several answers pointing to the same lesson give a sharp path; four answers pointing to four lessons give an order, not a recommendation. That is a matter of how you word the questions, not a setting. And if you offer to take an address, the wording becomes “Get this path by e-mail” — which brings in far more people than “get your score”.
What you read afterwards changes too. Success per question means nothing when no answer is wrong, so the results screen shows the distribution of answers instead, question by question, with the lesson targeted and the percentage. Read line by line, that is a photograph of your audience — and it is the more useful of the two measures, because it does not say what people do not know, it says where they are.
In the Course sheet box, enter a price. From then on, only the introduction and the free lessons can be watched without buying; the others carry a lock, and the purchase panel replaces the player when they are clicked. The [wtl_achat] block shows the price and the button. An empty price makes the course free.
The currency, common to every course, is set in Settings → Usage and payment.
A discount on one course. Still on the sheet, the Discount field, in percent, leaves the normal price untouched: the site shows everywhere the struck-through price, the discounted price and a “−20 %” pill, on cards, the key facts strip, the purchase panel, and the discounted price is what is charged at checkout, with the discount noted on the receipt. Empty the field to return to the normal price. With a Stripe promotion code on top, you decide, in Settings → Usage and payment: on an already discounted course, either checkout offers no code field and only the course discount applies, or the code adds up on top, 30 € discounted 10 % then a 15 % code make 22.95 €. By default, no stacking.
Stripe offers a test mode: a second set of keys on your account, where nothing is charged and fake cards work. Your real sales are not affected. Always start there.
sk_test_.4242 4242 4242 4242, a future date and any code. You come back to the course, open, and the sale appears in the Sales tab.When everything is in place, replace the test key with the live key, sk_live_, taken with test mode off. The mention becomes Live mode — payments are charged.
Without a shop, the discount happens at Stripe: Products → Coupons menu, a code with an amount or a percentage, an end date, a number of uses. Tick Settings → Usage and payment → Discount codes: the payment page then offers a “Promotion code” field, the student types the code, and the amount actually paid is what gets recorded in the Sales tab. A code applies to the whole catalogue; in test mode, create it with test mode on. On a course that already has its own discount, the code field does not appear, unless you allow stacking in the same place.
A student who wants three courses should not have to pay three times. In Settings → Usage and payment, tick Offer a cart, then create a page containing [wtl_panier] and set it as the Cart page. From then on, an Add to cart button sits next to Buy this course, on the purchase panel and on a locked lesson. “Buy this course” stays for those who want only one.
The cart needs no account: a visitor fills it while browsing, logging in is only asked at payment time, and the cart is waiting afterwards. The cart page lists the courses with their price, discounted where applicable, lets the student remove some, shows the total and a Pay N courses button. At Stripe, each course is a line of the same payment: one receipt, and on return every course opens at once. The Sales tab shows one line per course, with the same payment reference and each one's share.
Place [wtl_panier_bouton] in your header or a menu: it is the link to the cart, with the number of courses in it, updated on every addition.
Where and with which words. Still in Settings → Usage and payment, choose where the add button shows: on the purchase panel, on a locked lesson, or both. The texts can be replaced one by one, “Add to cart”, “Remove from cart”, “View cart”, “Continue in the catalogue”, the pay button and the tier announcement; with no text entered, the one shown in grey. In the pay button, %1$d becomes the number of courses and %2$s the total. The announcement can also be switched off with a checkbox.
A cart offers “Continue in the catalogue”, and an empty one “Browse the courses”, towards the catalogue page chosen in Settings → Cards and thumbnails, or the automatic course archive if no page is chosen. A free course, or one the student already owns, cannot enter the cart; if it was there, it leaves by itself. The cart lives in the student's browser for thirty days.
Still in Settings → Usage and payment, the volume discount rewards those who take several courses: up to three tiers, “from 2 courses, −10 %”, “from 3 courses, −15 %”. The highest tier reached applies to the whole cart, after each course's own discount. The purchase panel announces the tiers under the button, and the cart says what is missing to reach the next one: “Add 1 more course and the discount rises to −15 %”. Without tiers, the cart only groups the payment.
With a Stripe promotion code, the rule for discounted courses also covers the volume discount: either the code field does not appear when a discount already applies, or the code adds up on top, as you choose in the same place.
Stripe's test mode is sealed: its keys, fake cards and sales never touch your real payments, even on the account that collects them. On a local site, such as mysite.local, only one thing does not work: the webhook, since Stripe cannot reach your computer. Leave the field empty, the student's return to the site is enough to open access. To check it anyway, Stripe's command-line tool can relay events to a local address; only useful to a developer.
On return from Stripe, the site reads the payment back and opens access. If the student closes the window before coming back, the webhook does the same on its side. In Stripe → Developers → Webhooks, add the address shown in the settings for the checkout.session.completed event, then paste the signing secret, whsec_…, in the Webhook secret field. Also tick charge.refunded so that a refund removes access by itself, and, if you offer the subscription, invoice.paid, invoice.payment_failed, customer.subscription.updated and customer.subscription.deleted. Without a webhook, everything still works.
A pack gathers courses and sells them together, cheaper than separately. Everything happens on one screen, menu WebTV-Learning → Packs → Add a pack, and there is nothing to create at Stripe.
What the visitor sees:
[wtl_pack_achat] and [wtl_pack_cours] where you want them. You can then write before, between and after: a testimonial under the cards, an FAQ, a second call to buy. As soon as one of the pack's blocks is in the text ([wtl_pack], [wtl_pack_achat], [wtl_pack_cours]), nothing is placed automatically any more; another block, a free quiz for instance, changes nothing;[wtl_packs] block you place wherever you like.The rules:
An organisation training several people has no use for one purchase per learner: it wants to buy ten seats and hand them out. Without this offer, it buys one access and passes the password around — which earns you nothing and ruins your tracking.
Turn it on in Settings → Payment → Seat bundles. Set:
What the organisation sees. Under a course or pack price, a notice "Training several people?" with the price per seat and a quantity field. It pays at Stripe as for any purchase, then finds its bundle in My account → My seats: the counter, a field to paste its learners' addresses, and the list of seats given out. An account is created for an unknown address, and WordPress sends that person its "choose your password" message — you can untick that sending, and it is then up to the organisation to pass the credentials on.
The reclaim rule is written in their screen, so they know it: with the recommended setting, a seat can be taken back as long as the learner has not opened their first lesson; after that, it is used up. This protects them from a wrong address and you from rotation — ten seats serving fifty people over a year.
When a seat is taken back, the access closes and the learner leaves the group. The account itself is deleted if it never served — the case of a mistyped address: account created by that seat, never logged in, no progress, no other access, no purchase and no group. In every other case the account stays: someone who has already worked does not vanish because an organisation takes their seat back. You can turn this deletion off in the settings, and the Students tab offers a Delete button on accounts that never served anyway.
Each bundle creates its group, with the buyer as its manager: they find their learners' tracking there, the entry and exit assessment if they set one, and the activity reports. They never enter your admin area. On your side, bundles are listed in WebTV-Learning → Seat bundles, read-only: a bundle is born from a payment, it is not created by hand.
For "the whole catalogue for a period", don't use seats: that is the subscription, just below.
A payment that renews, every month or every year, and the courses open for as long as it runs. It is an option, not another model: your courses and packs stay on sale individually, and as long as the box stays unticked, nothing changes on your site.
In Settings → Usage and payment → Subscription:
Nothing to create in Stripe: no product, no price, no portal setting. The plugin describes the price at checkout and prepares the management area itself.
Where students subscribe. Place the [wtl_abonnement] block wherever you like: home page, catalogue page, a dedicated page. It shows the offer and one button per plan; to a subscriber, it shows where the subscription stands. The offer also appears in My account → My subscription. A visitor without an account goes through My account first, then reaches checkout.
What the subscriber sees. Covered courses open, their card reads “Included in my subscription” (the wording can be changed in Catalogue labels), the purchase panel says “Included in your subscription”. In My account, they read the date of their next payment and open, with one button, Stripe's management area: change card, find invoices, cancel. Each paid instalment appears in My purchases, with its invoice. Stripe does not send the student back by itself after a cancellation: they return through the “Return to…” link at the top left, and their account then says the cancellation is recorded, until when the courses stay open, and that the subscription can still be resumed.
The rules, to know before selling:
On the admin side. The Sales tab gains a Subscribers table (plan, start date, status); each instalment is a line in the log and the export, under its invoice number. Grant access can offer a subscription, for a number of days (30 by default): a goodwill gesture, a demo. A paid subscription is cancelled in Stripe, by the student or by you; an offered one is removed in one click.
The webhook matters more here. A one-off purchase does very well without a webhook; a subscription lives over time, and the webhook is what announces a renewal, a declined card, a cancellation right away. Tick four more events for it: invoice.paid, invoice.payment_failed, customer.subscription.updated, customer.subscription.deleted. Without a webhook, the site asks Stripe where the subscription stands once the due date has passed, and the Re-read subscriptions from Stripe button in the Sales tab does it on demand.
What Stripe charges. Recurring payments go through its “Billing” service: 0.7% of the amount, on top of its usual fee (pay-as-you-go rate noted on 18 September 2026; check it on stripe.com). A subscription always issues a Stripe invoice, whether the Invoice box of the Invoicing tab is ticked or not.
Refunding an instalment in Stripe does not close the subscription: cancel it in Stripe as well if that is what you want.
By default, the student gets Stripe's receipt and checkout only asks for a card. The Settings → Invoicing section adapts the rest to your situation, one choice at a time. The plugin does not issue invoices itself: it prepares clean data for Stripe, your accountant or your management tool. For the rules that apply to you, ask your accountant.
A refund is made in Stripe, with the payment's Refund button. Full, it removes access to that payment's courses; partial, a goodwill gesture for instance, it keeps access and the log notes it. With the webhook, add the charge.refunded event and it all happens by itself. Without a webhook, click Re-read refunds at Stripe in the Sales tab.
A company intranet, a non-profit, a school: in Settings → Usage and payment, choose sells nothing. Every course is open whatever its sheet says, and everything about money disappears: prices, “Free” labels, purchase panel, cart, price filters and sorting. Entered prices are not erased; they come back if you change your mind.
In the same place, Reserve playback for logged-in people closes lessons to those without an account: only a course's introduction plays, other lessons invite to log in. An intranet thus knows who follows what, quizzes and progress included. A selling author can use it too: a free course becomes a way to get acquainted, the visitor creates an account and may consent to your e-mails. The pages themselves stay visible to all; closing the whole site is a matter for WordPress or your network.
Settings → Sales logs every purchase, with the student, the course, the source and the amount, the customer and the invoice when invoicing is set up, and lets you remove an access. Above the log, a search field covers the whole row — a name, a course, a Stripe reference — and three menus narrow it by course, source or access state; a click on a column heading sorts, a second one reverses. The date sorts by date and the amount by amount, not by what is written. Sorting and filtering change nothing in the exported file. The Grant access form opens a course to a student who paid another way, a funder, a bank transfer, a gift, for a duration or with no end.
A video added, renamed, reordered or retagged in Streamlike only shows on the site after Settings → Catalogue → Refresh the catalogue. A progress bar moves playlist by playlist, with the name of the current one; with many playlists, allow one to two seconds per playlist. The refresh creates the courses of newly ticked playlists, updates the lessons of the others, and respects everything you arranged in the Lessons box. Course titles and texts are never rewritten.
A video moved from one playlist to another follows: it leaves the old course and joins the new one. A playlist that has become empty empties its course, which goes to draft: it leaves the catalogue and search engines, its settings stay. The Catalogue tab flags it; untick its playlist if it is no longer used. If the playlist fills up again, the refresh tells you and you republish the course yourself. If Streamlike does not answer, nothing is touched.
Two settings influence the refresh, in Settings → Lessons:
The plugin relies on labels and fields one can forget. Settings → To complete draws the table, course by course: no introduction, unnumbered lessons, file names not renamed, lessons without description, incomplete chapters, missing price (unless “Free on purpose” is ticked on the sheet), level not set, no image, page emptied by an Oxygen design. Each column explains itself on hover and below the table. After a fix in Streamlike, refresh the catalogue so the table sees it.
Settings → Appearance sets every block at once, without writing a line of style. Each family of settings is a panel that unfolds with a click; the preview, on the right, stays on screen and updates with every change. One panel open at a time is ticked to start with: opening a panel closes the others. Untick it to keep several open, or to unfold everything. The page remembers the panel you were working in. The preview is clickable: a click on a zone, the card, the cart, the programme, opens the panel holding its settings and offers above it the other panels that affect it. It follows every setting live; nothing is saved until you click Save appearance.
The Settings, Use and payment and Invoicing tabs read the same way: each section there is a panel that unfolds, one open at a time by default, and the page reopens the one you were in. A folded panel still saves its settings: closing it loses nothing.
Four colours are enough, the intermediate shades are derived from them:
Catalogue cards and other-course thumbnails have their own settings: the image, its format, the image's own to crop nothing, or a fixed one for a regular grid, 16:9, 2:1, 3:2, 4:3 or square, cropping or showing the whole image; background, text and secondary text, derived from the general colours until you choose something; size, capitals, weight, line height and lines of the title, that is the number of lines reserved for it, the title being cut beyond and readable in full on hover, so that every band has the same height; radius. That is where you make dark cards on a light page, or the reverse: the secondary text and the “Free” and level pills are derived from the card itself, so they stay readable whatever its background.
The video player comes from Streamlike: it lives in a frame of its own, and none of your colours or CSS touch-ups reach it. Two settings are passed to it, in its address:
The logos themselves — the image, the corner, the transparency — are created and set in Streamlike, never here: the Fetch my logos button only re-reads your list, and nothing is ever changed over there from WebTV Learning. The Create a logo in Streamlike link takes you there; come back and refresh the list afterwards. The percentage beside each name is the opacity you gave it: at 50%, a light logo vanishes on a light picture.
Reading that list needs the Logo View right on your API key, under Appearance in a key's rights in Streamlike. A key created normally holds them all, so there is nothing to do. But if you restricted yours — a good habit — you have to add that one: without it, fetching answers “Your API key is not allowed to read your logos”, and the menu stays at two choices.
And each course may decide otherwise, in its record, to the right of the editing screen: Logo on the video offers the same choices there, plus Same as the site setting, which is the starting value. Enough to put a client's brand on the course they ordered from you, or to remove the logo from one course without touching the others.
The player's other colours — progress bar, background behind the video — are set in the Streamlike back office, in a player configuration: they then apply to your videos published elsewhere too.
The lessons column next to the player: background, lesson titles, numbers and durations, section titles, background and rule of the current lesson, derived from the general colours until you choose something; separators between lessons or not; size, capitals, weight, line height and lines of lesson titles, cut beyond and readable in full on hover; section title size; width of the column, in pixels or as a percentage of the block, the programme moving below as soon as the player would have less than one and a half times its width, on a tablet in portrait for instance; height, beyond it the list scrolls, never more than 80 % of the window; thumbnail width.
The block of thumbnails to other courses: frame background and title colour, derived until you choose something; title size; thumbnail width, a minimum, they share the line; thumbnail title lines, reserved and cut beyond. The thumbnails themselves follow the Cards section.
The strip at the top of a course page: background, labels, the small capitals titles, and values, derived from the general colours until you choose something; layout, in a line, boxes side by side, or in a column, stacked, for a sidebar; separators between boxes or not; radius.
The catalogue buttons, categories, price, sorting, and the search field: background and text of the buttons, background, text and border of the chosen button, all derived from the general colours until you choose something; shape, pill, rounded like the corners, or square; size; capitals and weight of the text; button height; space between them; border thickness, zero for a button without a line; column width when filters sit on the left; for that column's group titles, colour, size, weight, capitals, letter spacing and margin below.
The header button and its badge, the “Add to cart” button filled or outlined, the colour of the discount line and of the total, the width of the thumbnails in the cart. With no colour chosen, everything derives from the general colours, and the preview shows the result.
For what is not adjustable, a style editor, placed after the rest: it wins. It colours the syntax, underlines a missing brace, and completes what you type: the start of a hook, .wtl-c, suggests the blocks' hooks with their explanation; --car suggests the variables; col suggests properties, then their values. Enter or Tab to accept. Prefix every selector with .wtl to touch only the blocks. The collapsed reference under the field lists the variables and style hooks that will not change from one version to the next: .wtl-cours .titre-lecon, --accent, and so on. Variables are redefined like anything else:
.wtl { --accent: #B4531F; }Restore the original appearance clears everything, touch-ups included.
cdn.streamlike.com, thumbnails from its image servers. The catalogue itself is read by your server, with your key, never by the visitor's browser.All of it serves the student, resuming and tracking, and your accounting. None of it is passed to a third party, apart from what Stripe receives to charge and invoice.
The export returns everything the list above sets out, in plain words. Erasure removes everything except sales: a sale is an accounting record, which the law requires you to keep for years. So the name, company, address and VAT number are stripped from it, it is detached from the account, and the date, amount, course and payment reference are kept. WordPress tells you so on screen, with the number of sales concerned.
Addresses left at the foot of a free quiz are erased unconditionally — including those of people who never created an account, which is the commonest case.
Funded courses are the exception, by default. For a learner in a group where an entry and exit assessment is set on their course, and not exempted, the training centre must be able to prove to the funder that the course was followed. Before erasing, the site therefore files their course record in the group (tracking, sessions, assessments), then erases the rest; it does the same when the account is deleted. WordPress says so on screen. The right to erasure gives way to a legal retention obligation: it is up to you to know whether you are subject to one. In Settings → Maintenance → Supporting records for funded courses, choose Erase everything if that isn't your case, and enter the retention period your funder requires: it runs from the end of the course, applies at once to every record kept, and records past it erase themselves. With no period entered, nothing erases itself — yet the GDPR asks for a limited period: fill it in. With no assessed group, none of this concerns you.
Mention Streamlike and Stripe in your privacy policy, the student token as pseudonymous data, what group managers and tutors can see, and playback tracking if you use it for a report handed to a third party, a funder for instance: the student must be informed.
Before writing, two reflexes will save you days.
In Settings → Settings → Help and diagnostics, a Copy the report button puts everything worth knowing about your site on your clipboard: versions of the plugin, of WordPress and of PHP, theme, page builder, caching plugin, licence status, number of courses and lessons, result of the last refresh, and the list of your active plugins.
Paste it into your message. Without it, the first reply you get will be a list of questions, and you will have lost a round trip.
The report contains none of your keys — neither your Streamlike key, nor your Stripe keys, nor your licence key: it only says whether they are filled in, and for Stripe whether it is a test or a live key. It contains no student data: no name, no address, no token, only how many there are. It sits in plain text in the text area: read it before sending if you wish.
Support covers the plugin: installing it, its settings, its blocks, and what it does with your Streamlike videos. It does not cover your theme, your hosting, your page builder or building your site.
Either the catalogue has not been refreshed yet, or the course was opened with a builder that replaced its page with an empty design. Place a block in it, or remove the design. Logged in as administrator, you see a message where a block should be; a visitor sees nothing.
Check the Lesson order setting. If your videos are not numbered, arrange them in the Lessons box: your order wins and survives refreshes.
That is the fallback, and the Catalogue tab flags it after each refresh, with a link to the course's Lessons box. Two ways to silence the alert: drag the lesson to its place in the Lessons box and save, or rename its file with a number in Streamlike, then refresh. A lesson placed by hand is no longer flagged.
It comes from a file name. Give it a real title in Streamlike, or type it in the Lessons box.
Set the teaser tag on the introduction video in Streamlike, or name it like the course. Refresh.
They probably started without an account, in their browser, then created an account: the two do not merge. Their logged-in progress starts from where they watch from now on.
You are an administrator: you see everything. Untick the The author and the administrator see every lesson setting to check the page as a student.
Does the course have a price? Is Stripe connected? Without a key, the sheet shows “Sales are not open yet”.
Logged in as administrator, the message shows the reason given by Stripe: most often a badly copied key, or a test key while test mode is off.
A block of the same kind is already on the page, in the text, a template, or placed automatically. The administrator sees a note where the ignored block is. Keep one.
That is normal: the real block shows on the published page.
Refresh the catalogue.
A receipt's language is fixed at payment time, from the Stripe customer. Since version 0.12.2, the plugin gives it your site's language: later payments come out in that language, a receipt already issued keeps its own. To be safe, also set the Default language at Stripe, in Settings → Business → Customer emails.
Streamlike takes a few minutes to consolidate its figures. Read the measure again a little later. A playback shorter than one second is never counted.
Read the line under the button: it says how many lessons were asked about. “0 lesson played out of 0 asked” means the student has not opened a single lesson yet — there was nothing to ask Streamlike. “0 out of 3” means Streamlike was asked and saw nothing: either the playback is too recent, or it never happened on this account.
If your API key is missing a right, you will no longer see “nothing played” but an error message carrying Streamlike's answer: the measure stops instead of handing you zeros that would look like an answer.
They do not measure the same thing. The site records the position reached, and dragging the cursor forward raises it; Streamlike only counts what actually played. The ⚠ sign marks that gap: the student probably moved the cursor. The “How it was watched” column confirms it, with the number of jumps and the length skipped.
An attribute the block does not know is ignored without a message. Check its name in the blocks table. A singular or plural slip is understood, colonne for colonnes for instance; any other slip is not.
A pack shows if it is published and contains at least one published course with lessons. Then check Settings → Cards and thumbnails → Packs in the catalogue: on only where you place the block, you need to place [wtl_packs]. The strip appears neither on a catalogue restricted to a category, nor on a selection.
You ask for billing details, and one was missing. They complete the profile, click Save and continue to payment, and checkout opens. It only happens once.
Their due date passed without the site learning of the payment: no webhook, or the four subscription events are not ticked in it. The site asks Stripe again by itself, at most every six hours per student; to skip the wait, Sales → Re-read subscriptions from Stripe. Then tick the events, see The subscription: one more option.
It only shows if the subscription is offered (box ticked and at least one price) or if the student already has one. A site set to sells nothing has no subscription.
First check Sales: if the sale is listed, the right was granted, and the problem is elsewhere — ask them to log out and back in.
If the sale is not listed while Stripe did take the money, a cache is the likely culprit. The page the student comes back to after paying is the one that grants access; served from a cache, it runs no code and grants nothing. Check that your caching plugin does not store pages for logged-in people, then grant the access by hand from Sales → Give access.
Your cache is storing pages for logged-in people. Turn that off in its settings — it is off by default in every serious plugin. The account button writes the student's first name into the page, so a stored page carries that name to whoever comes next.
Deactivate then delete it. Nothing is erased by default: tick Erase settings and courses in Settings → Maintenance before deleting if you want everything removed. Nothing is ever changed in Streamlike or Stripe.
Nothing matches this search.
WebTV-Learning · guide d'utilisation
WebTV-Learning transforme un site WordPress en école en ligne à partir d'un compte Streamlike : chaque playlist devient un cours, chaque vidéo une leçon. Le site accueille des élèves, mémorise leur progression, vend les cours par Stripe, et laisse l'auteur maître de son catalogue. Ce guide accompagne l'administrateur du site, de l'installation à la première vente. Il ne demande aucune connaissance en programmation.
Il vous faut :
L'extension fonctionne avec n'importe quel thème et avec les constructeurs de pages comme Oxygen ou Elementor.
Deux principes à retenir.
Vos pages ne contactent jamais Streamlike : l'extension récupère le catalogue depuis l'administration et le garde dans WordPress ; une modification faite dans Streamlike n'apparaît qu'après une actualisation. Et l'argent des ventes va directement sur votre compte Stripe : l'extension ne touche jamais à un paiement.
webtv-learning.zip, puis Installer maintenant et Activer.À quoi sert cette clé. À recevoir les mises à jour. WordPress vous les proposera dans Tableau de bord → Mises à jour, exactement comme celles de vos autres extensions : une pastille, un bouton, et c'est fait. Sans clé saisie, l'extension fonctionne normalement — seules les mises à jour automatiques s'arrêtent, et vous devrez remplacer le dossier à la main pour changer de version.
Cette clé n'a rien à voir avec votre clé d'API Streamlike. L'une ouvre votre catalogue vidéo, l'autre vos mises à jour.
Une extension de cache (WP Rocket, LiteSpeed, WP Super Cache, W3 Total Cache…) ou un service comme Cloudflare enregistre vos pages finies et sert ce même fichier à tout le monde. C'est ce qui rend un site rapide, et il n'y a rien à changer : WebTV-Learning sait se signaler.
Les pages qui dépendent de la personne qui regarde — celles d'un élève connecté, la page du panier, le retour depuis la caisse — demandent d'elles-mêmes à ne pas être enregistrées. Le reste, le catalogue en tête, continue d'être servi depuis le cache.
⚠️ Une seule chose à vérifier dans votre cache : qu'il n'enregistre pas les pages des personnes connectées.
C'est le réglage par défaut de toutes les extensions sérieuses, souvent nommé « ne pas mettre en cache pour les utilisateurs connectés ». Si vous l'aviez désactivé, un élève pourrait recevoir la page d'un autre : son prénom affiché à la place du sien, ses leçons montrées fermées alors qu'il les a payées. Ce cas-là, l'extension ne peut pas le rattraper — quand la page vient du cache, aucun code ne tourne.
Dans WebTV-Learning → Réglages, section Accès à Streamlike :
La clé ne quitte jamais le serveur.
Elle n'est utilisée que par l'administration pour lire votre catalogue. Elle n'est jamais envoyée au navigateur des visiteurs. Une fois enregistrée, elle s'affiche masquée ; laissez le champ vide pour la conserver.
En tête du même onglet, une section Monter le site apparaît tant qu'il manque une page. Elle crée celles dont l'extension a besoin — Nos cours, Mon compte, et Mon panier si vous vendez plusieurs cours à la fois —, pose la bonne brique dans chacune et les désigne dans les réglages. Vous n'avez plus qu'à les habiller.
Trois précautions à connaître :
Une fois le site monté, la section disparaît. Elle est là pour démarrer, pas pour encombrer.
« Nos cours » peut devenir votre page d'accueil.
Si votre catalogue tient sur une seule page et que vous ne voulez pas d'une vitrine séparée, allez dans Réglages → Lecture de WordPress, choisissez « Une page statique » et désignez Nos cours comme page d'accueil. Laissez-la désignée comme page du catalogue dans Cartes et vignettes : les liens « parcourir les cours » reviendront simplement à l'accueil.
Deux pages ou une seule, les deux montages fonctionnent. L'accueil séparé raconte — une accroche, trois cours en avant, vos offres, un test de positionnement — et renvoie vers le catalogue pour qui veut tout voir. C'est le découpage qui vend le mieux dès que le catalogue dépasse une dizaine de cours.
Dans l'éditeur, le bouton + puis l'onglet Compositions → rubrique WebTV-Learning : onze pages toutes faites, à poser et à retoucher. Une page d'accueil complète d'organisme de formation, un bandeau d'accroche, trois chiffres clés, des cours mis en avant, vos offres, la présentation du formateur, un appel à l'action, et les pages du catalogue, des tests, du compte et du panier.
Elles imposent la structure, jamais les couleurs : espacements, colonnes, hiérarchie des titres. C'est voulu — une composition qui force ses teintes jurerait avec votre thème, celle-ci s'y glisse. Les textes sont des exemples crédibles à remplacer en les relisant, plutôt qu'une page blanche à remplir.
Une fois posée, une composition n'est qu'une suite de blocs ordinaires : retirez-en, ajoutez-en, rien ne vous ramène au modèle.
Le panneau Apparence colore les briques. Mais sur une même page, votre catalogue suivait votre palette pendant que les boutons du thème gardaient la leur — et c'est cette discordance qui fait qu'un site « ne fait pas fini ».
Dans Apparence → Couleurs, en bas, la case Étendre cette palette à tout le site y remédie : les boutons et les liens de l'ensemble du site prennent votre accent, et vos quatre couleurs s'ajoutent aux palettes proposées dans l'éditeur.
La case n'est proposée qu'aux thèmes modernes, les seuls qui exposent leurs styles à WordPress. Avec un thème classique ou un constructeur de pages, les couleurs valent pour les briques et le reste se règle dans le thème.
Tout ce qui suit se fait dans le back-office Streamlike et se retrouve sur le site à la prochaine actualisation. Rien n'est obligatoire : l'extension a un repli pour chaque cas. Mais bien préparer ses vidéos évite de tout reprendre à la main dans WordPress.
Le nom de la vidéo devient le titre de la leçon. Un nom de fichier comme 10_archivage_carte_SD est rendu lisible, « Archivage carte SD », mais sans accents : mieux vaut un vrai titre. Un numéro en tête du nom, 1_…, 2_…, 10_…, donne l'ordre des leçons. Streamlike ne retient pas toujours l'ordre d'une playlist : des vidéos ajoutées d'un bloc ont toutes la même position. Le numéro fait foi.
Une playlist peut réunir plusieurs séries numérotées, un cours envoyé en 2022 et un complément « 1 à 11 » envoyé en 2024 : l'extension reconnaît les séries par les dates d'envoi et les met à la suite, sans les entremêler.
Une balise ou un champ personnalisé posé sur une vidéo dit ce qu'elle est. Les noms cherchés se règlent dans Réglages → Étiquettes Streamlike ; majuscules et accents ne comptent pas.
| Étiquette | Par défaut | Effet |
|---|---|---|
| Balise de la bande-annonce | teaser | La vidéo qui présente le cours : en tête du programme, marquée « Présentation », lisible par tout le monde, hors décompte des leçons. Sans balise, une vidéo sans numéro dont le titre est celui du cours joue ce rôle. |
| Balise des leçons gratuites | gratuit | Une leçon lisible sans achat, à l'intérieur d'un cours payant. Vos extraits, c'est elles. |
| Champ du chapitre | chapitre | Un champ personnalisé dont la valeur est le nom du chapitre : les leçons qui le portent sont regroupées sous ce titre dans le programme. |
La description de la vidéo s'affiche sous le lecteur pendant la leçon. La vignette de la vidéo sert dans le programme, et celle de la première leçon sert d'image au cours tant que vous n'en avez pas choisi une dans WordPress.
Sur le site, une leçon payante est cachée à qui n'a pas acheté. Mais cacher n'est pas protéger : la vidéo reste lisible par qui en connaît l'adresse. Pour la rendre réellement inaccessible, activez dans Streamlike la protection par jeton sur vos vidéos payantes. Le site délivre alors, à chaque lecture, un jeton valable quelques heures, lié au navigateur de l'élève, après avoir vérifié son droit. C'est le seul verrou qui tienne.
⚠️ Vos vidéos servent aussi à un autre site ?
La protection par jeton se règle vidéo par vidéo, dans Streamlike, et vaut partout où la vidéo est affichée. Un autre site qui pose un lecteur Streamlike ordinaire — un ancien site de formation, une page vitrine — verrait alors ses lecteurs refuser de jouer, pour tout le monde. Dans ce cas : n'activez le jeton que sur les vidéos qui ne sont plus servies que par WebTV-Learning, cours par cours ; et dès maintenant, activez plutôt la protection par domaine de Streamlike (Sécurité → referrer), qui limite la lecture à vos sites sans rien casser. Essayez toujours sur une seule vidéo avant de généraliser.
Chaque cours est un contenu WordPress comme un autre, dans WebTV-Learning → Cours. Il a sa propre adresse, du type /cours/mon-cours/, et les extensions de référencement le traitent comme une page.
L'adresse des cours se règle dans l'extension, pas dans les permaliens de WordPress.
Le réglage WordPress Permaliens ne concerne que les articles : y ajouter%category%ne change rien aux cours. Pour obtenir/cours/ma-categorie/mon-cours/, choisissez cette forme dans Réglages → Page d'un cours → Adresse des cours. Un cours sans catégorie prend « divers ». Les adresses de l'autre forme redirigent vers la bonne : un lien déjà posé ne tombe pas. À ne plus changer une fois le site référencé.
La liste se filtre par catégorie et par prix (gratuits, payants, ou en remise, pour suivre une campagne et retirer les remises d'un coup), en plus de la date ; une colonne Prix montre le prix, barré et remisé le cas échéant : choisissez dans les menus au-dessus de la liste, puis cliquez Filtrer. Le lien d'une catégorie, dans la colonne de droite, fait la même chose en un clic.
Cliquez le titre d'un cours pour l'ouvrir. Vous y trouvez :
Un cours mis à la corbeille ne renaît pas.
Décochez aussi sa playlist dans les réglages, sinon chaque actualisation vous le signalera. Restaurez-le pour le retrouver tel quel.
La boîte Leçons, sous le texte du cours, montre toutes les vidéos de la playlist dans l'ordre du programme. Ce que vous y faites l'emporte sur Streamlike et survit aux actualisations ; une leçon ajoutée dans Streamlike arrive en fin de liste.
⋮⋮, ou cliquez les flèches ▲ ▼. Un clic avec la touche Maj envoie la ligne tout en haut ou tout en bas.Quand la liste est longue. Au-dessus de la boîte, un champ Chercher une leçon n'affiche que celles dont le titre — le vôtre, celui de Streamlike ou ses étiquettes — contient ce que vous tapez. Le rangement est suspendu pendant la recherche : ranger une liste dont on ne voit qu'un tiers ne voudrait rien dire. Videz le champ pour retrouver la liste entière et le glisser-déposer.
Chaque titre de section porte un chevron ▼ et le nombre de leçons qu'il couvre : cliquez-le pour replier tout le bloc. Tout replier ne laisse que les titres — une formation de cent cinquante leçons tient alors dans un écran. Une section repliée emporte ses leçons quand vous la déplacez, à la poignée comme aux flèches.
Enregistrez avec Mettre à jour, en haut de l'écran.
Sous le titre de chaque leçon, un champ Résumé : une phrase qui dit ce qu'on y apprend. Elle sert au sommaire du cours, et à rien d'autre pour l'instant — mais c'est elle qui fait la différence entre une liste de titres et une table des matières qu'on lit.
Laissé vide, le site prend le champ personnalisé de Streamlike si vous en avez réglé un dans Réglages → Leçons → Champ du résumé, puis, à défaut, le début de la description du média. Le texte gris du champ montre ce qui s'affichera : vous n'avez pas à retenir la règle, vous la voyez.
Proposer les résumés manquants, en bas de la boîte, les fait écrire par l'IA à partir de la transcription de chaque vidéo — celle que Streamlike garde avec le média. Un seul appel pour tout le cours, pour que les résumés se ressemblent entre eux : dans un sommaire, c'est l'uniformité qui se lit. Ils arrivent dans les champs vides seulement, jamais par-dessus ce que vous avez écrit, et rien n'est enregistré : vous relisez, vous corrigez, vous mettez le cours à jour. Une leçon sans transcription ni description est laissée de côté, et l'écran dit combien. Le bouton n'apparaît que si une clé d'IA est enregistrée.
Copier le lien, sur une ligne, met dans le presse-papier l'adresse directe de cette leçon. Copier le sommaire, en bas, fait la même chose pour toutes : une liste de liens titrés avec leurs résumés, dans l'ordre affiché, les leçons masquées exclues, prête à coller dans la description du cours. L'adresse d'une leçon est celle du cours suivie de son identifiant : rien à aller chercher en cliquant leçon par leçon.
Avec un thème classique ou l'éditeur de blocs, la page d'un cours se compose seule, à la suite de votre texte : les repères, l'achat, le lecteur et le programme, le formateur, les autres cours. Rien à faire.
Votre texte peut contenir ce que vous voulez, y compris d'autres briques : un quiz libre ([wtl_quiz]) pour faire le point avant d'acheter, l'offre d'abonnement, une sélection de cours. La page continue de se composer seule en dessous. Elle ne s'efface que si vous posez vous-même une brique du cours — [wtl_cours], [wtl_reperes], [wtl_achat], [wtl_formateur] ou [wtl_autres_cours] : c'est le signe que vous composez la page à votre façon.
Le cartouche des repères, en tête de page, montre durée, leçons, niveau, prérequis, langue, prix, chapitres et date de mise à jour. Réglages → Page d'un cours choisit lesquels. Un repère sans valeur reste absent : pas de niveau si la fiche n'en donne pas, pas de prix si le cours est gratuit, pas de chapitres s'il n'y a qu'une section. Un code court peut faire autrement, dans son ordre à lui : [wtl_reperes elements="prix,duree,lecons"]. Son aspect se règle dans l'onglet Apparence, section Cartouche.
Le programme, la colonne des leçons à côté du lecteur, se règle au même endroit : ce qu'il montre en plus du titre de chaque leçon, numéros, vignettes, durées, pastilles, titres de section, barre de progression, et sa place, à droite du lecteur, à gauche, ou dessous sur toute la largeur. Sur petit écran, il passe toujours dessous. Un code court peut faire autrement : [wtl_cours programme="gauche" programme_elements="vignettes,durees"]. Son aspect se règle dans l'onglet Apparence, section Programme.
Le sommaire, enfin, est une brique à poser dans le texte du cours : la liste des leçons, chacune cliquable, avec son résumé et sa durée. C'est la seule structure qu'un moteur de recherche puisse lire sur une page de cours — le programme, lui, est construit par le navigateur, et le code source de la page n'en montre rien. Bloc « Sommaire du cours » dans l'éditeur, [wtl_sommaire] ailleurs.
Il s'écrit en liste sobre ou en cartes, avec le nombre de colonnes voulu : [wtl_sommaire allure="cartes" colonnes="2"]. Trois interrupteurs retirent ce dont vous ne voulez pas — resume="non", duree="non", vignette="oui" — et titre="Les épisodes" pose un titre au-dessus. Un lien du sommaire ouvre la leçon dans le lecteur sans recharger la page. En cartes, l'aspect suit l'onglet Apparence, section Cartes et vignettes, comme les cartes du catalogue.
Le résumé de chaque leçon s'écrit dans la boîte Leçons d'un cours, sous le titre. Laissé vide, c'est celui de Streamlike qui sert, si vous avez réglé un champ personnalisé, puis le début de la description du média. Et si une clé d'IA est enregistrée, le bouton Proposer les résumés manquants les écrit à partir de la transcription des vidéos : ils arrivent dans les champs vides, vous relisez, vous corrigez.
Une seule leçon se pose aussi, en carte, entre deux paragraphes : bloc « Leçon (carte) », ou [wtl_lecon lecon="2"]. Le numéro de la leçon suffit ; son identifiant marche aussi, et ne bouge pas si vous réordonnez. bouton="Écouter l'épisode" ajoute un bouton sous la carte. C'est la même carte que celle du sommaire, donc le même aspect.
Un cours dans une autre langue. La fiche d'un cours porte sa langue, reprise de la vidéo à l'actualisation. Elle sert deux fois : elle dit à l'IA dans quelle langue écrire les résumés de leçon, et — si vous cochez Langue des libellés dans Réglages → Page d'un cours — elle écrit aussi les libellés de la page dans cette langue : « Duration », « Lessons », « Free ». Le reste du site ne bouge pas. Sans la case, tout reste dans la langue du site : le champ dit la langue du contenu, pas celle de la page.
Créez une page et posez-y le code court [wtl_catalogue] : la grille des cours publiés, avec image, titre, niveau, extrait, prix, nombre de leçons et durée. Au-dessus, une barre de filtres, dont le contenu se choisit dans Réglages → Cartes et vignettes, « Les filtres au-dessus du catalogue » :
Le filtre par prix propose aussi « En remise » dès qu'un cours l'est. Un compte des cours affichés suit les filtres.
Les mots sont les vôtres. Réglages → Cartes et vignettes → Les intitulés du catalogue ouvre la liste des textes de la barre : le champ de recherche, « Catégories », « Tout », « Prix », « Tous les prix », « Gratuits », « Payants », « En remise », « Classer » et ses cinq tris, « Précédent », « Suivant », et la marque « Dans mes cours ». Chaque champ montre en gris le texte d'origine ; ne saisissez que ceux que vous voulez changer, « Promos » à la place de « En remise » par exemple. Un champ vidé reprend le texte d'origine. Les noms des catégories, eux, se changent dans le menu Catégories.
Les gros catalogues se paginent : Réglages → Cartes et vignettes → Cours par page fixe le nombre de cours par page, zéro pour tout afficher. Au-delà, des numéros de page, Précédent et Suivant apparaissent sous la grille, sans rechargement, sur les cours qui restent après les filtres ; un filtre qui change ramène à la première page, et la page choisie s'inscrit dans l'adresse. En rangées, la pagination ne joue que lorsqu'un filtre regroupe les résultats en grille. Attribut par_page="12". Leur alignement, et leur présence aussi au-dessus de la grille, se règlent dans l'onglet Apparence, section Filtres ; ils prennent l'aspect des boutons de filtre. Les filtres se placent au-dessus du catalogue, en une barre, ou dans une colonne à gauche, avec le nombre de cours par catégorie ; sur petit écran, la colonne repasse au-dessus. Attribut filtres_position="gauche" ou "haut".
Un filtre ne s'affiche que s'il a de quoi filtrer : au moins deux catégories, des cours gratuits et des payants. Les trois se combinent. Quand rien ne reste, la page le dit ; si une catégorie ou un prix est en cause, un bouton propose de chercher dans tout le catalogue en gardant le texte tapé. En rangées, un filtre actif regroupe les résultats en une seule grille, sans titres de catégorie ; les rangées reviennent quand on le retire. Un code court peut choisir : [wtl_catalogue filtres="categories,prix,recherche"], ou filtres="non". L'aspect des boutons se règle dans l'onglet Apparence, section Filtres.
Le catalogue se présente de deux façons, au choix dans Réglages → Cartes et vignettes :
Un code court peut choisir : [wtl_catalogue disposition="rangees"] ou disposition="mosaique". La page d'une catégorie reste une grille : une seule rangée n'en serait pas une.
Les filtres choisis s'inscrivent dans l'adresse de la page : …/nos-cours/?categorie=mao, ?prix=gratuit, ?recherche=motion, seuls ou combinés. Cette adresse ouvre la grille déjà filtrée ; mettez-la dans un menu, un lien ou une lettre d'information. Le nom après categorie= est l'identifiant de la catégorie, visible dans WebTV-Learning → Catégories, colonne Slug. La forme courte …/nos-cours/#mao marche aussi.
Référencement : la page de catégorie, pas le filtre.
Pour un moteur de recherche,…/nos-cours/?categorie=maoest la même page que…/nos-cours/: pratique pour vos visiteurs, sans effet sur le référencement. Ce qui s'indexe, c'est la page de chaque catégorie, que WordPress crée d'office à l'adresse…/categorie-de-cours/mao/, avec son propre titre. Posez-y[wtl_catalogue]— dans le gabarit d'archive de votre thème, ou dans un modèle de constructeur appliqué aux catégories de cours — : la grille se limite d'elle-même à la catégorie de la page, sans boutons. Une description saisie sur la catégorie devient le texte de cette page.
Pour une « vidéo du mois » ou des « formations à ne pas manquer », la brique [wtl_selection cours="128,131" titre="À ne pas manquer"] montre les cours dont vous donnez l'identifiant, de n'importe quelle catégorie, dans l'ordre où vous les donnez, avec les mêmes cartes que le catalogue. L'identifiant est dans la colonne ID de la liste des cours, et la fiche de chaque cours affiche le code court prêt à copier, sous le nombre de leçons. Le nom d'adresse du cours convient aussi. Un cours en brouillon ou sans leçon n'y apparaît pas.
Un élève connecté reconnaît d'un coup d'œil les cours qu'il a déjà, achetés ou offerts : une marque « Dans mes cours » sur l'image, et à la place du prix, avec sa progression. Cela se coupe dans Réglages → Cartes et vignettes. Un visiteur ne voit que les prix.
Réglages → Cartes et vignettes choisit ce qu'affiche une carte du catalogue, image, titre, niveau, prix, extrait, leçons et durée, et le prix ou « Gratuit » en étiquette posée sur l'image, utile quand la bande de texte n'apparaît qu'au survol, et ce qu'affiche une vignette des autres cours. Un code court peut faire autrement avec l'attribut elements : [wtl_catalogue elements="image,titre"] pour une grille d'images titrées, par exemple. Au même endroit, La bande de texte des cartes se montre toujours, sous l'image, ou au survol seulement : elle vient alors se poser sur le bas de l'image. Sur un écran tactile, elle reste visible. Attribut bande="survol" ou bande="toujours". L'aspect des cartes, fond, texte, taille du titre, arrondi, se règle dans l'onglet Apparence, section Cartes.
Au même endroit, la brique des autres cours, les vignettes sous le lecteur ou sur la page d'accueil : son titre, ou, sans titre saisi, « Mes autres cours » ou « Découvrez aussi » selon les cas, le nombre de vignettes, et quels cours : ceux de l'élève, les autres cours du site, « à acheter », c'est-à-dire les cours payants que l'élève n'a pas encore, ou automatique. Le cours en cours de lecture n'y figure jamais, ni ceux que l'élève possède quand la source est le catalogue. Un code court garde le dernier mot sur une page donnée, et sait filtrer : [wtl_autres_cours source="promo" categorie="meme" ordre="prix" titre="Pour aller plus loin"] propose les cours payants des mêmes catégories que le cours lu, du moins cher au plus cher. categorie accepte aussi des identifiants de catégories, prix vaut « gratuit » ou « payant », ordre un critère de l'onglet Ordre des cours. Son aspect se règle dans l'onglet Apparence, section Autres cours.
Réglages → Ordre des cours classe la grille du catalogue et les pages de catégorie : par titre, du plus récent au plus ancien, par catégorie puis par titre, les gratuits d'abord, du moins cher au plus cher, ou à la main. En rangées, l'ordre vaut à l'intérieur de chaque rangée. Pour l'ordre à la main, glissez les cours de la liste, ou cliquez les flèches, Maj pour tout en haut ou tout en bas, puis enregistrez. Un code court peut imposer son propre ordre : [wtl_catalogue ordre="date"], ordre="titre", ordre="categorie", ordre="gratuit", ordre="prix" ou ordre="manuel".
Plus bas dans le même onglet, l'ordre des catégories : celui des rangées du catalogue et de ses boutons de filtre. Glissez-les de même. Une catégorie jamais rangée vient après les autres, par ordre alphabétique.
Créez une page contenant [wtl_compte] et désignez-la dans Réglages → Élèves. Un visiteur y trouve la connexion et l'inscription ; un élève connecté y trouve son espace, en volets :
Avec Oxygen, Elementor ou un autre constructeur, ne modifiez pas chaque cours un par un : faites un modèle pour le type « Cours ». Deux façons de le remplir :
Les deux se combinent : chaque brique que vous posez dans un modèle remplace sa version automatique, les autres continuent d'arriver par l'Inner Content. Dans l'éditeur du constructeur, chaque brique montre une maquette, à peu près à sa taille ; la vraie brique s'affiche sur la page publiée.
Le réglage Réglages → Page d'un cours permet de forcer : toujours composer, ou ne jamais rien poser d'office.
⚠️ Un cours ouvert dans Oxygen sans y poser de brique s'affiche vide.
Oxygen remplace la page par sa composition, vide au départ. Posez au moins[wtl_cours]dedans, ou retirez cette composition. L'onglet À compléter signale ces cours.
Une brique se pose de deux manières : en bloc, dans l'éditeur de WordPress, ou en code court, qui marche partout ailleurs. Les deux font exactement la même chose — le bloc vous évite seulement d'écrire.
Dans l'éditeur, ouvrez l'insertion de blocs et cherchez WebTV-Learning : les dix-neuf briques y sont rangées ensemble. Vous pouvez aussi taper / suivi du nom de la brique, par exemple /catalogue.
Une fois le bloc posé, ses réglages sont dans le panneau de droite : des menus déroulants, des cases à cocher, et la liste de vos vrais cours, de vos catégories et de vos packs — plus de numéros à recopier.
Un bloc auquel vous ne touchez pas suit vos réglages.
Chaque réglage du panneau commence à « Comme les réglages du site ». Tant que vous n'y touchez pas, la brique se comporte exactement comme le code court nu, et une modification faite plus tard dans les réglages se voit aussitôt sur la page. Ne renseignez que ce que vous voulez faire différemment ici.
Dans l'éditeur, une brique se montre en maquette : un dessin à sa taille, avec son nom. C'est normal — la vraie brique a besoin de la page publique pour fonctionner. Voyez le résultat avec l'aperçu de WordPress.
L'onglet Compositions de l'insertion propose quatre pages toutes faites, dans la rubrique WebTV-Learning :
| Composition | Ce qu'elle pose |
|---|---|
| Page « Nos cours » | Un titre et le catalogue |
| Page « Mon compte » | Un titre et l'espace de l'élève |
| Page « Panier » | Un titre et le panier |
| Accueil | Les packs, une sélection de cours, l'offre d'abonnement |
Une composition posée n'est plus qu'une suite de blocs ordinaires : retirez, ajoutez, déplacez ce que vous voulez. Rien ne vous ramènera au modèle.
Il n'y a pas de composition pour la page d'un cours, et c'est voulu : cette page se compose déjà toute seule (voir La page d'un cours). Y poser les briques à la main couperait justement cette composition automatique.
Partout ailleurs — Oxygen, Bricks, Divi, Elementor, un widget, un modèle de thème — la brique s'écrit en code court, dans un bloc Code court ou un élément Shortcode. Sur la page d'un cours, l'attribut id est inutile : la brique prend le cours de la page. Ailleurs, donnez-lui le numéro du cours ou l'identifiant de sa playlist.
| Brique | Ce qu'elle affiche | Attributs |
|---|---|---|
[wtl_cours] | Le lecteur, la leçon en cours, le programme | id, enchainer="non" pour ne pas lancer la leçon suivante à la fin, programme="gauche", "droite" ou "dessous", programme_elements="numeros,vignettes,durees,pastilles,sections,progression" |
[wtl_reperes] | Durée, leçons, niveau, prérequis, langue, prix, chapitres, mise à jour | id, elements="prix,duree,lecons" |
[wtl_achat] | Le prix et le bouton d'achat, ou « Gratuit », ou « Vous suivez ce cours » | id |
[wtl_formateur] | L'auteur du cours : nom, photo, biographie, site | id |
[wtl_selection] | Des cours choisis à la main, de toute catégorie, dans l'ordre donné | cours="128,131" (identifiants, colonne ID de la liste des cours) ou des noms d'adresse ; titre="À ne pas manquer" ; colonnes (sans, autant que de cours, quatre au plus), elements, bande comme le catalogue |
[wtl_autres_cours] | Des vignettes vers d'autres cours | source="mes" (ceux de l'élève), "catalogue" (les autres), "promo" (payants, pas encore acquis), "auto" ; nombre jusqu'à 24 ; titre ; categorie="meme" ou "mao,montage" ; prix="payant" ou "gratuit" ; ordre="prix", "titre"… ; elements="image,titre,detail" |
[wtl_catalogue] | La grille des cours | colonnes, categorie="montage,son", filtres="non" ou "categories,prix,recherche,tri", filtres_position="gauche" ou "haut", par_page="12", ordre="titre", "date", "categorie", "gratuit", "prix" ou "manuel", disposition="mosaique" ou "rangees", bande="toujours" ou "survol", packs="non" ou "oui" pour la bande des packs, elements="image,titre,niveau,prix,extrait,detail" |
[wtl_compte] | Connexion et inscription, ou l'espace de l'élève | — |
[wtl_inscription] · [wtl_connexion] | Un seul des deux formulaires | — |
[wtl_pack_achat] | Le panneau d'un pack : valeur barrée, prix, économie, boutons. Ou le complément, pour qui en possède une partie | id (numéro ou nom d'adresse du pack) |
[wtl_pack_cours] | Les cartes des cours d'un pack, sous un titre | id, titre="Au programme" ou "non", colonnes, elements |
[wtl_pack] | Les deux précédentes à la suite, d'un bloc | id, titre, colonnes |
[wtl_packs] | Les cartes de vos packs | titre="Nos packs", colonnes, disposition="mosaique" ou "rangee" (une ligne qui défile, avec ses flèches), nombre="3", ordre="recent", "titre" ou "prix", packs="94,93" pour n'en montrer que certains, dans cet ordre |
[wtl_panier] | Les cours mis au panier, les totaux, le paiement en une fois | titre ; catalogue="12" (numéro de page ou adresse) pour le lien d'un panier vide, sinon la page du catalogue réglée |
[wtl_compte_bouton] | Pour un en-tête : « Bonjour Alain » avec le lien vers Mon compte si l'élève est connecté, « Se connecter » sinon | texte="Bonjour %s" (%s devient le prénom), invite="Se connecter", deconnexion="oui" pour un lien « Me déconnecter » à côté |
[wtl_abonnement] | L'offre d'abonnement et un bouton par formule ; pour un abonné, l'état de son abonnement et le lien pour le gérer. Rien si l'abonnement n'est pas proposé | aucun |
[wtl_quiz_liste] | La liste publique de vos tests : une carte par quiz, avec son image, sa présentation, son nombre de questions et un bouton vers sa page. De quoi faire une page « Nos tests » à mettre dans votre menu | quiz : les numéros voulus séparés par des virgules, dans cet ordre (vide : tous les quiz publiés) — dans le bloc, vous les choisissez par leur titre ; colonnes : 1 à 4 (2 par défaut) ; titre : un titre au-dessus ; bouton : le texte du bouton |
[wtl_quiz id="12"] | Un quiz libre, hors cours : l'accueil, les questions, puis le score, le score par thème, votre message et ce que vous conseillez | id : le numéro du quiz, à copier dans son écran ; titre : un autre titre, ou non pour n'en afficher aucun ; texte="non" : sans présentation ; bouton : le texte du bouton de départ |
[wtl_panier_bouton] | Le lien vers le panier avec le nombre de cours, pour un en-tête ou un menu | texte="Mon panier" |
Le formateur est l'auteur WordPress du cours : son nom affiché, sa photo de profil, sa biographie et son site viennent de son compte, dans Utilisateurs → Profil. Un site, un auteur : rien à ressaisir.
colonne="2" vaut colonnes="2", element vaut elements. Un attribut que la brique ne connaît pas est ignoré.[wtl_autres_cours] de sources différentes sont acceptées.[wtl_reperes] sur une page qui n'est pas un cours, sans id, n'affiche rien.L'inscription est libre, avec ou sans achat : adresse e-mail, mot de passe, prénom ou pseudo. Elle sert aux leçons gratuites comme aux cours achetés. L'élève devient un utilisateur WordPress avec le rôle Élève, qui ne donne accès ni à l'administration ni à sa barre.
Le formulaire d'inscription comporte une case, jamais cochée d'avance, dont le texte se règle dans Réglages → Élèves → Texte de consentement. Le texte accepté et la date sont conservés ; l'élève peut revenir sur son choix dans ses préférences. C'est ce qui vous autorise à lui écrire.
Un élève connecté retrouve sa progression sur tous ses appareils : les leçons vues sont marquées, la leçon en cours reprend là où il l'a laissée, et la suivante s'enchaîne à la fin. Un visiteur sans compte a la même chose, mais dans son seul navigateur.
Réglages → Élèves liste vos élèves : adresse, date d'inscription, consentement aux e-mails, nombre de cours suivis, dernière activité. Au-dessus du tableau, un champ de recherche et des menus (e-mailing, activité) réduisent la liste ; un clic sur un titre de colonne la trie, un second l'inverse. Tout se passe dans la page, sans rechargement, et l'export reste complet. Deux exports : les adresses consentantes pour votre outil d'e-mailing, et le suivi de tous les élèves, une ligne par élève et par cours, avec les leçons vues, la dernière activité, les quiz et le temps réellement regardé quand il a été mesuré.
Le bouton Suivi ouvre la fiche d'un élève : chacun de ses cours, leçon par leçon, avec deux mesures côte à côte.
Qui décroche ? Passé un certain nombre de jours sans activité, une pastille signale l'apprenant à trois endroits : cette liste, le suivi de son groupe et sa fiche.
Le délai se règle dans Réglages → Signaler un décrochage : 14 jours par défaut, 0 pour ne rien signaler du tout. Trois cas ne déclenchent jamais la pastille : un cours terminé, un accès tout récent, et un apprenant revenu depuis moins longtemps que le délai — une simple visite suffit à l'effacer. Le site n'envoie aucun e-mail : il vous montre qui relancer, c'est vous qui écrivez.
La liste « à relancer ». Chercher les pastilles dans un tableau de vingt lignes est vite fastidieux. Deux écrans sortent donc les décrocheurs du lot :
L'encart ne s'affiche que s'il y a quelqu'un à relancer, et disparaît quand vous mettez le délai à 0.
La mesure de Streamlike se relit à la demande, cours par cours, d'un clic sur Lire la mesure de Streamlike : quelques secondes, un peu plus pour un long cours. Elle est gardée avec sa date. Streamlike met quelques minutes à consolider ses chiffres : une lecture toute récente se relit un peu plus tard. Un signe ⚠ marque une leçon que le site voit bien plus avancée que Streamlike, voire « vue » sans que Streamlike ait rien lu : le curseur a sans doute été déplacé. La fiche s'exporte, leçon par leçon, avec les deux mesures, la manière de regarder et les quiz.
Les trois chiffres se complètent : Streamlike dit quelle part de la leçon a été vue et ne se laisse pas tromper par un curseur déplacé, mais il compte en temps de vidéo, donc une leçon vue en vitesse double lui paraît entièrement vue ; le site dit combien de temps l'élève y a passé et comment ; le quiz dit ce qu'il en a retenu. Aucune de ces mesures ne prouve l'attention : une vidéo qui tourne dans un onglet caché compte comme lue.
Les trois mesures ci-dessus supposent un élève connecté. Sur un cours gratuit et ouvert — un podcast, une démonstration —, personne ne se connecte : la progression ne vit que dans le navigateur du visiteur et ne remonte jamais. Le seul endroit qui sache combien de personnes ont écouté, c'est le lecteur.
Réglages → Audience va les chercher chez Streamlike, leçon par leçon : lectures, spectateurs, visionnages, temps vu, part réécoutée, et la part de la leçon qu'une personne a entendue en moyenne. Deux périodes, les douze derniers mois ou depuis toujours, une recherche et des colonnes qui se trient. Les chiffres sont relevés quand vous cliquez, jamais en arrière-plan, et la date du relevé est affichée.
Un avertissement est écrit à l'écran plutôt que laissé à découvrir : les lectures sont un compteur cumulé depuis la création de la vidéo, elles ignorent la période choisie — contrairement à toutes les autres colonnes.
Un accès est personnel, mais rien n'empêche un élève — ou un centre qui s'est inscrit comme un élève — de donner son identifiant à dix personnes. La parade la plus simple est dans Réglages → Appareils par compte : le nombre d'appareils connectés en même temps, 2 par défaut. Au-delà, la connexion la plus ancienne se ferme. Le téléphone et l'ordinateur d'une même personne ne gênent personne ; un accès diffusé à quinze personnes devient inutilisable, chacun éjectant les autres. À 0, aucune limite. Vous et les personnes qui gèrent le site n'êtes jamais concernés.
Sa fiche montre aussi, sous un titre Tests de positionnement, les quiz libres qu'il a passés en étant connecté : passages, dernier score, meilleur score, date. Ils figurent dans l'export CSV de cet élève, en lignes marquées test dans la dernière colonne — type — les autres colonnes n'ayant pas bougé. Un élève venu par un test, sans cours encore entamé, a désormais une fiche à lire au lieu d'un « rien pour l'instant ».
L'élève voit ses appareils dans Mon compte → Mes préférences, avec un bouton Fermer les autres sessions — la liste indique le navigateur et le système de chaque appareil (« Chrome sur macOS », « Safari sur iPhone »), et marque celui d'où il regarde : c'est ce qu'il faut faire quand on a prêté son mot de passe et qu'on le regrette, avant de le changer.
Ce réglage protège le compte. Il ne protège pas la vidéo elle-même : tant qu'une leçon n'est pas protégée par jeton chez Streamlike, la page ne fait que cacher le lecteur, et son adresse reste jouable ailleurs. Voir « Protéger vraiment les vidéos ». Et aucun réglage n'empêchera jamais quelqu'un de filmer son écran.
Quiconque peut modifier un cours, vous, en lit toutes les leçons sans achat. Pour contrôler une page comme la verra un élève sans droit, cadenas et bouton d'achat compris, décochez Réglages → Administrateur → L'auteur et l'administrateur voient toutes les leçons. Les élèves ne sont jamais concernés par ce réglage.
Quand un centre vend votre formation avec quelques heures de tutorat, deux personnes ont besoin de suivre les apprenants sans entrer dans votre administration : le tuteur, qui prépare ses séances — c'est souvent vous, l'auteur —, et le responsable côté centre, qui veut voir où en sont les apprenants qu'il a envoyés. Les groupes servent à ça.
Tant que vous ne créez aucun groupe, rien ne change. Si vous êtes à la fois l'auteur, le tuteur et l'administrateur, vous n'en avez pas besoin : vous voyez déjà tout.
Dans WebTV-Learning → Groupes → Ajouter un groupe :
Un groupe suit tous les cours de ses élèves, pas une liste choisie.
Un onglet Mes groupes apparaît dans leur espace Mon compte. Ils n'entrent jamais dans l'administration de WordPress, et ne voient ni vos ventes, ni vos réglages, ni les autres groupes, ni les autres élèves du site.
Pour chaque groupe : la liste des élèves avec chacun de leurs cours et son avancement — le plus récemment suivi d'abord —, la date de leur dernière séance et leur nombre de séances. De quoi repérer d'un coup d'œil celui qui décroche. Un groupe peut réunir des élèves qui suivent des formations différentes : chacun est suivi dans les siennes. Puis, pour chaque élève, sa fiche.
Un bouton Exporter le suivi du groupe donne un fichier CSV, une ligne par élève et par cours, à reporter dans votre outil de gestion de la formation.
Elle répond, cours par cours, aux questions qu'on se pose avant une séance de tutorat :
Une séance, c'est une période où l'élève regarde sans s'arrêter plus de trente minutes : un élève qui revient vingt fois fait vingt séances.
Les séances ne sont notées que depuis la version 0.22.0.
Avant, le site ne gardait pour chaque leçon que la première et la dernière date. Un élève ancien peut donc avoir un rythme vide avant cette date : la fiche le signale, pour qu'on ne prenne pas un vide pour une absence.
La colonne « Selon Streamlike » montre la dernière mesure que vous avez relue.
La mesure de Streamlike se relit à la demande, depuis la fiche de suivi de l'élève dans votre administration : le tuteur et le responsable ne peuvent pas la déclencher eux-mêmes. Tant qu'elle n'a pas été relue, la colonne reste vide.
L'élève d'un groupe voit aussi l'onglet Mes groupes : le nom de son groupe et les liens qui lui sont ouverts. Il ne voit jamais les autres élèves du groupe, ni leur progression, ni les liens réservés à l'encadrement. Cette règle est vérifiée par le serveur : une adresse modifiée à la main ne montre rien de plus.
Le responsable, le tuteur et vous pouvez joindre des liens à un groupe : une feuille d'émargement, un dossier partagé, la visioconférence de tutorat. Chaque lien est pour tout le groupe, pour l'encadrement seulement, ou pour un seul élève — une feuille d'émargement à son nom, le lien de signature que votre outil de gestion lui a envoyé. Un élève voit les liens pour tout le groupe et les siens, jamais ceux d'un camarade. Ses documents personnels apparaissent aussi en tête de sa fiche.
Si un élève quitte le groupe, ses liens personnels passent en « encadrement seulement » : ils ne deviennent visibles de personne d'autre.
Un lien peut aussi être rattaché à une formation. Un élève qui suit Photoshop et Illustrator a deux feuilles d'émargement, une par formation : chacune apparaît sous sa formation dans sa fiche, et porte le nom de la formation dans son espace. Un lien rattaché à une formation n'atteint que les élèves qui la suivent : la convention de la promo Illustrator, même « pour tout le groupe », n'est pas montrée à l'élève venu pour Photoshop. Sans formation choisie, le lien vaut pour toutes. Quand le lien est pour un seul élève, la liste des formations ne propose que les siennes.
Seules les adresses commençant par https://, mailto: et tel: sont acceptées. Le document reste là où il vit, avec ses propres droits d'accès : l'extension ne garde que le lien.
Pour une formation financée (OPCO, Qualiopi), un centre doit mesurer où en est l'apprenant à l'entrée, puis ce qu'il a acquis à la sortie. Le site le fait avec le même questionnaire, passé deux fois, et compare les deux résultats.
Sans réglage, rien n'apparaît : un élève qui achète un cours en direct, ou un groupe qui n'en a pas besoin, ne voit jamais d'évaluation.
Préparer le questionnaire. C'est un quiz libre ordinaire (WebTV-Learning → Quiz libres). Donnez à chaque question un thème — le nom d'une compétence, « Blocs de texte », « Styles » : vous obtiendrez un score par compétence à l'entrée comme à la sortie. Si le quiz tire au sort une partie des questions, l'entrée et la sortie ne poseront pas forcément les mêmes : pour une comparaison exacte, n'en tirez pas.
Le régler sur le groupe, dans l'écran du groupe (boîte Évaluation d'entrée et de sortie) ou depuis Mon compte → Mes groupes pour le responsable et le tuteur. Une ligne par formation suivie dans le groupe :
Sous le tableau, cochez les élèves dispensés : ceux dont la formation n'est pas financée, si le groupe en mêle plusieurs. Ils ne voient aucune évaluation.
Ce que voit l'apprenant. Un encart en tête de la page du cours et dans Mes groupes : « Évaluation d'entrée, à passer avant de commencer ». Une fois l'entrée passée, tant que la sortie n'est pas ouverte, la page du cours le rappelle en discret : « elle s'ouvrira quand vous aurez terminé 80 % des leçons (vous en êtes à 35 %) », avec la date de fin de session s'il y en a une. Elle ne bloque rien : quel que soit son score, les leçons restent ouvertes. À l'entrée, il voit son score mais pas les bonnes réponses — il repassera le même test. À la sortie, il voit la correction complète, avec vos explications, et son score d'entrée à côté du nouveau. Un seul passage chacun.
Ce que voit l'encadrement. Dans la vue du groupe, un tableau Entrée → Sortie → Progrès pour chaque élève et chaque formation. Dans la fiche de l'élève, le détail par compétence et la trace de chaque passage : « passée alors que la formation était déjà commencée (30 % des leçons terminées) » pour une entrée tardive, « lancée par l'apprenant lui-même, à 85 % du parcours » pour une sortie. Les autres ouvertures possibles : au seuil de parcours, par l'encadrement, à la date de fin de session.
Depuis la fiche, le responsable ou le tuteur peut ouvrir la sortie maintenant (par exemple après la dernière séance de tutorat), annuler cette ouverture, ou rouvrir un passage après une erreur de manipulation. Un passage rouvert n'est pas effacé : il reste dans l'historique de la fiche, avec qui l'a rouvert et quand.
L'export du groupe (CSV) porte les deux passages : dates, scores, avancement du parcours à chaque passage, mode d'ouverture de la sortie (eleve, seuil, tuteur, date), progrès et compétences. C'est la pièce à verser au dossier Qualiopi, ou à importer dans votre outil de gestion.
Quand un apprenant est effacé. S'il demande l'effacement de ses données, ou si son compte est supprimé, son dossier de formation financée n'est pas perdu : il est rangé dans le groupe, tel qu'il était ce jour-là — suivi, séances, évaluations — puis le reste est effacé. L'encadrement le retrouve dans Mes groupes, section Dossiers archivés, et dans l'export du groupe (colonne archive_le). Voir Réglages → Entretien → Pièces justificatives des formations financées et la section Confidentialité.
Qualiopi demande de recueillir l'appréciation des apprenants. Le site le fait à chaud, au moment où l'apprenant termine : c'est le plus sûr, un questionnaire envoyé plus tard est souvent négligé.
Le préparer, dans WebTV-Learning → Appréciations. Le plus simple : Créer à partir du modèle — objectifs atteints, clarté des contenus, accompagnement du tuteur, facilité de la plateforme, rythme et durée, recommandation, et deux questions ouvertes. Vous l'ajustez ensuite. Quatre sortes de questions : échelle de 1 à 5 (de « pas du tout » à « tout à fait »), choix, oui / non, texte libre. Aucune bonne réponse : ce n'est pas un quiz.
Anonyme ou nominatif, à choisir pour chaque questionnaire. Anonyme (le réglage de départ) : on sait qui a répondu, pas qui a répondu quoi — la réponse ne garde que le mois. Nominatif : chaque réponse porte le nom de l'apprenant, pour que vous puissiez donner suite à un mécontentement. L'apprenant en est prévenu dans les deux cas. Dans un tout petit groupe, l'anonymat reste relatif, comme pour un questionnaire papier.
Le régler sur le groupe, dans le même tableau que l'évaluation, colonne Appréciation. Il est proposé juste après l'évaluation de sortie ; sans évaluation réglée pour cette formation, au seuil de parcours ou à la date de fin de session de la ligne. Un encart « Votre avis sur la formation » l'annonce sur la page du cours et dans Mes groupes. Il n'est jamais obligatoire, et se remplit une seule fois ; toutes les questions sont facultatives.
Les résultats, dans la vue du groupe, section Appréciations des apprenants : le taux de réponse, le taux de satisfaction (la part des réponses à 4 ou 5 sur les échelles), la moyenne et la répartition de chaque question, les commentaires. Un bouton exporte les réponses en CSV, sans nom si le questionnaire est anonyme. La fiche de l'apprenant dit s'il a donné son avis, et l'export du suivi porte la date (colonne appreciation_le).
Les séances de tutorat elles-mêmes — leurs comptes rendus, l'émargement — se tiennent dans votre outil de gestion de la formation (Digiforma, par exemple). Le site vous donne de quoi les préparer et un export ; il ne tient pas un second registre.
Chaque cours peut proposer un quiz par leçon, un quiz de fin de cours, les deux, ou aucun : le choix se fait dans la fiche du cours, boîte Quiz et parcours, sous la boîte Leçons.
Dans la boîte, chaque leçon a son volet, plus un volet « Évaluation des connaissances » pour la fin du cours. Au-dessus de la liste, un champ de recherche et un bouton Tout replier vous évitent de dérouler cent volets pour en trouver un. Ouvrez un volet, + Question, puis :
En tête de chaque quiz, dès qu'il compte deux questions, le tirage au sort : « À chaque passage, poser 10 questions tirées au sort parmi les 25 », et deux cases pour mélanger l'ordre des questions et l'ordre des réponses. Une seconde tentative n'est plus la copie de la première : on ne retient plus « la 3, c'est B ». Laissez 0 pour poser toutes les questions.
Les flèches réordonnent les questions et les réponses. Enregistrez avec Mettre à jour. Une question sans énoncé, avec moins de deux réponses ou sans bonne réponse n'est pas gardée. Les bonnes réponses ne quittent jamais le site : la page envoie les réponses de l'élève, le site corrige.
Sous le lecteur, après la description de la leçon, le Quiz de la leçon, qui apparaît une fois la leçon vue, c'est-à-dire lue jusqu'au pourcentage réglé pour le parcours. Il répond, valide, et voit son score, les bonnes réponses en vert, ses erreurs barrées, l'explication s'il y en a une. Un bouton Recommencer. Une question à plusieurs bonnes réponses rapporte des points partiels : chaque bonne cochée compte, chaque mauvaise cochée retire autant, jamais en dessous de zéro.
Avant et après. Dans la boîte Quiz et parcours, « Le quiz d'une leçon se joue » peut valoir avant et après : l'élève répond une première fois avant de regarder la leçon, et ne voit alors que son score, juste ou faux par question, sans les bonnes réponses ni les explications. La leçon vue, le quiz revient ; cette fois la correction est complète, et la page affiche les deux scores et le progrès. C'est ce progrès qui prouve ce que la leçon a apporté : il figure dans l'export des résultats. Seul le passage d'après compte pour la réussite, le score global et les tentatives. Quand une vidéo se termine et que son quiz n'est pas encore réussi, la page le montre au lieu d'enchaîner sur la leçon suivante. Le quiz de fin de cours apparaît après la dernière leçon, et le programme y mène par une entrée « Évaluation de fin de cours ». Dans le programme, une pastille « Quiz » marque les leçons qui en ont un, « Quiz ✓ » quand il est réussi.
Un bandeau au-dessus du lecteur invite à répondre d'abord : « Avant de commencer : trois questions, pour mesurer ce que cette leçon vous apporte ». Il ne verrouille rien — l'élève lance la leçon quand il veut, c'est la même règle que l'évaluation d'entrée — mais sans lui, on démarre la vidéo sans savoir qu'on vient de perdre sa mesure de départ. Il s'efface dès que l'entrée est passée, et dès que l'écoute a vraiment commencé. Et chaque passage d'entrée garde où en était la lecture : une entrée jouée à 85 % de la leçon ne mesure plus une entrée, et la fiche du tuteur comme l'export le disent.
Avec un compte, chaque tentative est gardée avec la date et le score ; c'est le meilleur score qui compte. La page Mon compte affiche le score global du cours : la moyenne des meilleurs scores de chaque quiz, un quiz jamais tenté comptant zéro. Sans compte, le quiz se joue et se corrige, mais rien n'est mémorisé ; Réglages → Quiz et parcours peut aussi réserver les quiz aux élèves connectés.
Réglages → Quiz et parcours fixe pour tous les cours le seuil de réussite en pour-cent, le nombre de tentatives par quiz, sans limite ou non, et le sort des visiteurs sans compte. Le seuil s'ajuste par cours dans la boîte Quiz et parcours.
Bonnes réponses et explications : par défaut, elles ne sont montrées qu'une fois le quiz réussi, ou à la dernière tentative permise. Avant cela, chaque question dit seulement juste, faux ou en partie : une réponse ratée ne se devine pas au coup suivant, un vrai ou faux raté ne devient pas une évidence. Vous pouvez aussi les montrer après chaque tentative, ou jamais. Dans tous les cas, les bonnes réponses ne quittent le site que lorsque le réglage le permet.
Libre, l'élève suit les leçons dans l'ordre qu'il veut. Imposé, leçon 1, puis 2, puis 3 : une leçon ne s'ouvre que si la précédente est vue jusqu'au pourcentage réglé et si son quiz, quand elle en a un, est réussi. L'élève voit un cadenas et le message « Terminez d'abord la leçon précédente ». La présentation reste toujours ouverte, et l'administrateur qui « voit tout » n'est pas bloqué. Le parcours se règle pour tous les cours dans Réglages → Quiz et parcours, et s'ajuste par cours dans la boîte Quiz et parcours de la fiche du cours, ligne « Parcours de l'élève ». Il ne vaut que pour un élève connecté : sans compte, rien ne peut être vérifié. Pour un financeur qui exige la lecture complète, mettez le pourcentage à 100.
Réglages → Élèves, section Résultats des quiz : par élève et par cours, le score global, le nombre de quiz réussis, la dernière tentative. Le bouton Exporter les résultats (CSV) donne un fichier avec une ligne par élève, par cours et par quiz, meilleur score, tentatives, réussi ou non, dernière date, score avant la leçon et progrès quand le quiz se joue avant et après, puis une ligne de score global par cours. Il s'ouvre dans Excel ou Numbers ; c'est la base d'un rapport pour un financeur.
Dans Réglages → Quiz et parcours → Affichage des quiz, pour tous les quiz des cours :
Dans la fiche d'un cours, sous les quiz, le volet Réussite par question apparaît dès que des élèves ont joué : pour chaque question, combien de fois elle a été posée et la part de bonnes réponses, en rouge sous 40 %. Une question que presque tout le monde manque est mal posée — ou c'est la leçon qu'il faut reprendre. Les chiffres partent de la version 0.17.0 et suivent le rang des questions : ils se brouillent si vous en retirez ou en déplacez.
Au-dessus de lui, le volet Ce que les quiz vous apprennent donne, quiz par quiz : le nombre de passages, la part venue de visiteurs non connectés, le score moyen, le score à l'entrée et l'écart entre les deux — c'est-à-dire la progression. Les passages des visiteurs sont comptés depuis la version 0.63.0 : ce sont des compteurs, aucune donnée personnelle. Avant, un cours gratuit et ouvert ne laissait aucune trace de ses quiz, alors que les visiteurs y répondaient. Une réserve est écrite à l'écran : pour un visiteur non connecté, c'est la page qui déclare s'il joue avant ou après la leçon, donc le score d'entrée est un ordre de grandeur, pas une mesure.
Un quiz qui n'appartient à aucun cours, posé où vous voulez : « Testez vos connaissances sur InDesign ». Tout visiteur y joue sans compte ; le résultat lui dit où il en est, thème par thème, et lui conseille la suite — un cours, un pack, une page de votre site ou une adresse à vous. C'est une vitrine autant qu'un outil pédagogique.
Dans WebTV-Learning → Quiz libres → Ajouter un quiz :
Le tirage équilibre les thèmes. Il prend une question dans chaque thème à tour de rôle, plutôt que dix au hasard : avec douze thèmes et dix questions tirées, dix thèmes différents tombent, et jamais deux du même. Auparavant, près de deux tirages sur trois servaient trois questions ou plus d'un seul thème — ce qui rendait le bilan par thème trompeur.
Donnez-leur peu de thèmes, et larges. Comptez environ un thème pour deux questions tirées : cinq thèmes pour dix questions, de quoi poser deux questions par thème et distinguer « acquis » de « à travailler ». Avec douze thèmes pour dix questions, chaque thème ne tombe qu'une fois et son score ne vaut que 0 % ou 100 %. L'éditeur vous le signale.
Le niveau d'une question est un second axe. Base, Intermédiaire ou Avancé, à côté du thème — le thème dit de quoi parle la question, le niveau à qui elle s'adresse. « Texte » contient aussi bien le chaînage des blocs que la recherche GREP ; graduer le thème obligerait à le scinder. Une fois les niveaux renseignés, le tirage respecte vos proportions (20 base, 20 intermédiaires et 10 avancées tirées à dix donnent 4, 4 et 2), les questions sont posées de la plus simple à la plus avancée — ce qui évite de perdre un débutant dès la première — et le résultat affiche un score par niveau à côté du score par thème. C'est lui qui parle vraiment : « 90 % des bases, 50 % des intermédiaires, 10 % des avancées » dit un niveau, là où « 70 % » ne dit rien. Un quiz dont aucune question n'est graduée se comporte exactement comme avant ;
La présentation s'écrit dans la zone de rédaction du quiz, en haut de son écran : c'est l'éditeur de blocs de WordPress, avec la mise en forme, les liens, les images et les colonnes — tout ce que vous mettez là s'affiche au-dessus du bouton Commencer. La carte du test dans la liste, elle, n'en reprend qu'un résumé en texte, plus une image : celle que vous mettez en avant dans la colonne de droite, ou à défaut la première image de la zone de rédaction. C'est le seul endroit où l'écrire. Si un quiz porte encore du texte dans l'ancien champ Présentation, les réglages vous le montrent avec un bouton Reprendre ce texte dans la zone de rédaction : un clic, et vous pouvez le mettre en forme. Rien ne presse — tant que vous ne l'avez pas repris, c'est lui qui s'affiche.
La brique s'ajuste à votre page. Quand votre page porte déjà un titre, titre="non" évite de le répéter ; titre="Évaluez-vous" en met un autre sans renommer le quiz ; texte="non" masque la présentation quand la page la dit déjà ; bouton="Évaluer mon niveau" remplace « Commencer ». Les mêmes réglages sont dans le panneau du bloc Quiz libre de l'éditeur WordPress.
Publiez, puis copiez le code court de l'encadré Poser ce quiz sur une page — [wtl_quiz id="12"] — et collez-le dans une page, un article ou un modèle de votre constructeur.
**Le plus court chemin : le bouton Créer sa page. Dans la fiche d'un quiz, tant qu'il n'est posé nulle part, un bouton fabrique la page pour vous : une page qui ne contient que ce test, en brouillon**. Vous la relisez, vous la publiez, c'est fini — le test a son adresse, la liste le montre, et vos élèves le retrouvent dans Mes tests. Rien n'est mis en ligne sans vous.
Une page par test, plus une page qui les liste. C'est la forme qui marche : une page par quiz, où vous posez la brique Quiz libre, et une page « Nos tests » où vous posez la brique Liste des tests. La liste ne montre que les quiz posés quelque part — elle ne peut pas mener à une page qui n'existe pas. Si elle reste vide, elle vous le dit sur la page elle-même, et à vous seul.
Vous voyez ce que l'IA fait et ce qu'elle coûte. Les réglages affichent le modèle employé, l'effort de réflexion — « Rapide » est conseillé pour la rédaction de questions, et c'est le moins cher —, puis un relevé : nombre de demandes, jetons envoyés et écrits, coût estimé, et le détail de la dernière. Ces montants sont calculés à partir des tarifs publics connus de l'extension : ce sont des repères, pas une facture. Le seul chiffre qui fait foi reste celui de votre compte chez le fournisseur.
La fiche du générateur est enregistrée avec le quiz. Sujet, thèmes, dosage des niveaux, public, prérequis, contexte, programme : tout revient quand vous rouvrez le quiz. Demander un second lot de questions est donc un clic, pas une ressaisie — et c'est ainsi qu'on travaille, par paquets de vingt qu'on relit à chaque fois.
Le texte sur lequel s'appuyer a une limite, et elle est annoncée. Un compteur sous le champ dit combien de caractères vous avez collés et combien seront lus — 40 000 pour les questions, 8 000 pour la proposition de thèmes. Au-delà, le reste est ignoré.
Mais ne cherchez pas à tout faire entrer : un manuel n'est pas une bonne source. Il est plein de noms de boutons et de chemins de menus, et l'IA en tirera des questions qui mesurent la mémoire d'une interface, pas une compétence. Donnez-lui plutôt une page : vos grands titres, et deux ou trois phrases par partie sur ce qu'il faut avoir compris. C'est votre programme de formation — vous l'avez déjà.
Sur le coût, enfin : le texte source n'est pas ce qui pèse. Cinquante questions reviennent à une vingtaine de centimes avec une source complète, une dizaine sans. Ce qui coûte, c'est ce que le modèle écrit, et le modèle que vous avez choisi.
Faire proposer des questions par une IA. Dans Réglages → WebTV-Learning, section Aide à la rédaction, collez une clé d'API d'IA — la vôtre, créée sur votre compte chez le fournisseur et facturée à l'usage. Attention : un abonnement de conversation ne donne pas accès à l'API, ce sont deux produits distincts. Il n'y a pas de quota à épuiser, vous payez ce que vous consommez : un jeu de cinquante questions revient de quelques dixièmes de centime à une vingtaine de centimes selon le modèle choisi.
Une fois la clé posée, l'éditeur d'un quiz libre affiche Faire proposer des questions : vous donnez le sujet, le nombre voulu, les thèmes à employer, éventuellement un dosage des niveaux, et un texte de départ — votre programme, votre plan de cours. Les questions arrivent dans la zone de collage, jamais dans le quiz : vous relisez, vous coupez, vous gardez.
Chaque question proposée porte son explication : pourquoi la bonne réponse est la bonne, et au besoin pourquoi la plus tentante des fausses est fausse. Elle a deux lecteurs. Celui qui a passé le test, si vous affichez les corrections. Et surtout celui qui relit les questions sans forcément maîtriser le sujet — un assistant de formation, par exemple : l'explication lui permet de vérifier qu'une question est juste sans aller chercher ailleurs. Les questions qui arriveraient sans explication vous sont signalées, avec leur nombre.
Trois promesses tenues par l'extension : le site n'appelle l'IA que lorsque vous cliquez, il ne lui envoie aucune donnée d'élève, et il relit la réponse avant de vous la montrer — il écarte les blocs incomplets et les doublons, remet les vrai/faux dans le bon ordre, et brasse la place des bonnes réponses. Un modèle a les mêmes réflexes qu'un rédacteur pressé : il met volontiers la bonne réponse en premier. Ce qu'il ne corrige pas, il vous le signale : le compte des affirmations vraies et fausses, et la répartition par thème. Ce sont des choix de fond, ils vous appartiennent.
Reprendre les questions du quiz dans la zone. Le bouton réécrit toutes les questions du quiz dans la zone de collage, au même format. C'est l'aller-retour complet : vous corrigez le texte en bloc — renommer un thème sur dix questions, changer des niveaux, relire l'ensemble d'un coup d'œil — puis vous cliquez sur Remplacer toutes les questions. Rien n'est perdu au passage.
Et toutes les questions de tous vos quiz, en un fichier. Le bouton précédent ne connaît qu'un quiz. Dans l'onglet Quiz libres, Reprendre toutes les questions télécharge l'ensemble dans un seul fichier texte, au même format, chaque quiz annoncé par une ligne qui commence par @. Corrigez un nom de logiciel sur cinq questionnaires en un seul chercher-remplacer, puis recollez quiz par quiz.
C'est aussi la sauvegarde qui vous manquait : jusqu'ici vos questions n'existaient qu'en base de données.
Le retour, lui, reste quiz par quiz, et c'est voulu : un nom de quiz mal relu remplacerait cinquante questions au mauvais endroit. Ouvrez le quiz, collez sa partie, choisissez Remplacer toutes les questions — qui vous demande confirmation.
Vous pouvez n'en prendre que certains : une case à cocher sur chaque ligne du tableau, et une dans l'en-tête qui coche ce que vous voyez. Cherchez « Adobe », cochez tout, exportez : vous n'aurez que ceux-là. Sans aucune case cochée, vous obtenez tous vos quiz.
Les lignes qui commencent par @ ou par // ne sont jamais lues comme des questions : vous pouvez laisser l'en-tête du fichier et les noms de quiz en place quand vous recollez.
Coller des questions écrites ailleurs. Sous la liste des questions, un volet Coller des questions écrites ailleurs lit un texte simple et le transforme en questions — de quoi en poser cinquante sans les saisir une à une. Une question par bloc, les blocs séparés par une ligne vide :
Combien de planches compte un document en vis-à-vis de 4 pages ?
# Pages et planches
- 4
+ 3
- 2
= La première page est seule sur sa planche.La première ligne est l'énoncé. Les réponses commencent par - (fausse) ou + (bonne) ; plusieurs + font une question à choix multiples. # donne un thème, ^ un niveau (base, intermédiaire ou avancé), = une explication — tous trois facultatifs. Deux réponses écrites Vrai et Faux donnent une question vrai/faux, dans n'importe quel ordre. Un bloc sans énoncé, sans deux réponses ou sans bonne réponse est écarté, et le compte vous le dit. Deux boutons : Ajouter à la suite, ou Remplacer toutes les questions. Les questions ainsi posées sont des questions ordinaires : vous les relisez et les modifiez dans l'éditeur avant d'enregistrer.
Page de ce quiz. Un quiz libre n'a pas d'adresse à lui : il vit là où vous posez sa brique, et rien ne vous empêche de le poser à plusieurs endroits. Le site cherche tout seul les pages qui le portent — le bloc comme le code court — et tant qu'il n'y en a qu'une, il n'y a rien à régler. Posé sur plusieurs pages, le réglage Page de ce quiz vous demande laquelle sert d'adresse : c'est elle que verra un élève dans Mes tests, et celle vers laquelle mène la liste publique. L'onglet Quiz libres montre, pour chaque quiz, où il est posé et s'il reste un choix à faire.
Ce que le quiz vous apprend, en bas de son écran : le nombre de passages, le score moyen, la réussite de chaque question, et ce que les visiteurs font du conseil — combien ont cliqué sur le premier chemin, combien sur le second, palier par palier. C'est le chiffre qui dit si le quiz travaille : « quatorze demandes de rappel ce mois-ci ». Aucune donnée personnelle n'entre dans ces compteurs : on compte les clics, pas les gens. Une question que tout le monde manque est mal posée — ou c'est le sujet de votre prochain tutoriel. Aucune donnée personnelle n'entre dans ces compteurs. Si vous retirez ou déplacez une question, remettez-les à zéro : les chiffres suivent le rang des questions.
Tous vos quiz d'un coup d'œil : l'onglet WebTV-Learning → Quiz libres. Une ligne par quiz, avec ses questions, ses passages, son score moyen, les clics sur un conseil, les adresses laissées, la date du dernier passage et son code court à copier. Un champ de recherche, un menu pour ne garder que les publiés ou les brouillons, et un clic sur un titre de colonne pour trier — le plus joué, le moins réussi, le plus ancien. Le titre mène à l'écran du quiz pour le détail. Exporter ce tableau (CSV) le reprend tel quel dans un fichier à ouvrir au tableur, code court compris. La recherche, le filtre et le tri n'apparaissent qu'à partir de deux quiz : sur une seule ligne, ils n'auraient rien à faire.
Un test de positionnement n'a ni réussite ni échec : pas de seuil, pas de limite de tentatives. Les bonnes réponses, comme partout, ne quittent jamais le site.
Jusqu'ici, une question servait à vérifier un acquis. Elle peut aussi servir de porte d'entrée : on ne demande plus à la personne ce qu'elle sait, on lui demande où elle en est, et chaque réponse désigne la leçon qui la concerne. Il n'y a plus de bonne réponse, donc plus de score, plus de correction — et personne n'est mis en échec. C'est ce qu'il faut quand on s'adresse à des clients, à des prospects ou à des curieux plutôt qu'à des élèves.
« Vos apprenants se servent-ils de l'IA pour leurs travaux ? Je l'ignore / Je le soupçonne / Je le sais et je l'interdis / Je le sais et je l'encadre. » Aucune de ces réponses n'est fausse, et chacune mène ailleurs.
Comment on l'écrit. Dans les réglages du quiz, le champ Ce quiz oriente vers désigne le cours d'arrivée. Puis, dans les questions, une réponse qui oriente s'écrit avec ~ au lieu de + ou -, suivie du numéro de la leçon qu'elle conseille :
Vos apprenants s'en servent-ils pour leurs travaux ?
~ Je l'ignore > 1
~ Je le soupçonne > 1
~ Je le sais, et je l'interdis > 5
~ Je le sais, et je l'encadre > 4Une réponse sans numéro est reçue sans rien conseiller — c'est permis, toutes les réponses d'un questionnaire d'orientation ne débouchent pas forcément sur une leçon. Vous tapez un numéro, le site retient la leçon elle-même : réordonner le cours plus tard ne décalera pas vos renvois.
Un quiz note ou oriente, jamais les deux. Le mode ne se règle pas, il se déduit : un quiz dont toutes les questions disent où mènent leurs réponses oriente. Tant que le compte n'y est pas, l'écran de réglage vous le dit en toutes lettres et le quiz continue de noter.
Ce que voit celui qui répond : pas de score, mais le sommaire du cours remis dans l'ordre qui le concerne, la leçon conseillée en tête et mise en évidence. Tout le sommaire, pas seulement elle : on recommande un point de départ, on ne verrouille rien. Deux leçons également conseillées gardent l'ordre de votre cours.
Une seule ligne est mise en avant, celle par où commencer. Si quatre questions désignent chacune une leçon différente, les surligner toutes n'apprendrait rien et l'œil n'aurait plus de point d'entrée. Les autres gardent l'ordre conseillé, et une leçon désignée par plusieurs de vos réponses l'affiche à côté de son titre.
Si vous voulez un conseil franc, faites converger vos réponses. Plusieurs réponses qui pointent vers la même leçon donnent un parcours net ; quatre réponses qui pointent vers quatre leçons donnent un ordre, pas une recommandation. C'est une affaire de rédaction des questions, pas de réglage. Et si vous proposez de laisser une adresse, la formule devient « Recevoir ce parcours par e-mail » — ce qui ramène bien plus de monde que « recevoir votre score ».
Ce que vous lisez ensuite change aussi. La réussite par question n'a aucun sens quand aucune réponse n'est fausse : l'écran des résultats montre à la place la répartition des réponses, question par question, avec la leçon visée et le pourcentage. Lue ligne à ligne, c'est une photographie de votre public — et c'est la plus utile des deux mesures, parce qu'elle ne dit pas ce que les gens ignorent, elle dit où ils sont.
Dans la boîte Fiche du cours, saisissez un prix. Dès lors, seules la présentation et les leçons gratuites se lisent sans achat ; les autres portent un cadenas, et le panneau d'achat remplace le lecteur quand on clique dessus. La brique [wtl_achat] affiche le prix et le bouton. Un prix vide rend le cours gratuit.
La devise, commune à tous les cours, se règle dans Réglages → Usage et paiement.
Une remise sur un cours. Toujours dans la fiche, le champ Remise, en pour-cent, ne touche pas au prix normal : le site affiche partout le prix barré, le prix remisé et une pastille « −20 % », sur les cartes, le cartouche, le panneau d'achat, et c'est le prix remisé qui est demandé à la caisse, avec la mention de la remise sur le reçu. Videz le champ pour revenir au prix normal. Avec un code de réduction Stripe en plus, c'est vous qui décidez, dans Réglages → Usage et paiement : sur un cours déjà remisé, soit la caisse ne propose pas de champ code et seule la remise du cours s'applique, soit le code s'ajoute par-dessus, 30 € remisés à 10 % puis un code de 15 % font 22,95 €. Par défaut, pas de cumul.
Stripe propose un mode test : un second jeu de clés sur votre compte, où rien n'est débité et où des cartes fictives fonctionnent. Vos vraies ventes ne sont pas touchées. Commencez toujours par là.
sk_test_.4242 4242 4242 4242, une date future et n'importe quel code. Vous revenez sur le cours, ouvert, et la vente apparaît dans l'onglet Ventes.Quand tout est en place, remplacez la clé de test par la clé réelle, sk_live_, prise avec le mode test désactivé. La mention devient Mode réel — les paiements sont débités.
Sans boutique, la remise se fait chez Stripe : menu Produits → Coupons, un code avec un montant ou un pourcentage, une date de fin, un nombre d'utilisations. Cochez Réglages → Usage et paiement → Codes de réduction : la page de paiement propose alors un champ « Code promotionnel », l'élève y tape le code, et c'est le montant réellement payé qui s'enregistre dans l'onglet Ventes. Un code vaut pour tout le catalogue ; en mode test, créez-le avec le mode test activé. Sur un cours qui a déjà sa propre remise, le champ code n'apparaît pas, sauf si vous autorisez le cumul au même endroit.
Un élève qui veut trois cours n'a pas à payer trois fois. Dans Réglages → Usage et paiement, cochez Proposer un panier, puis créez une page qui contient [wtl_panier] et désignez-la comme Page du panier. Dès lors, un bouton Ajouter au panier accompagne Acheter ce cours, sur le panneau d'achat et sur le cadenas d'une leçon. Le bouton « Acheter ce cours » reste pour qui n'en veut qu'un.
Le panier ne demande pas de compte : un visiteur le remplit en se promenant, la connexion n'est demandée qu'au moment de payer, et son panier l'attend après. La page du panier liste les cours avec leur prix, remisé s'il y a lieu, permet d'en retirer, affiche le total et un bouton Payer N cours. Chez Stripe, chaque cours est une ligne du même paiement : un seul reçu, et au retour tous les cours s'ouvrent d'un coup. L'onglet Ventes montre une ligne par cours, avec la même référence de paiement et la part de chacun.
Posez [wtl_panier_bouton] dans votre en-tête ou un menu : c'est le lien vers le panier, avec le nombre de cours dedans, qui se met à jour à chaque ajout.
Où et avec quels mots. Toujours dans Réglages → Usage et paiement, choisissez où le bouton d'ajout se montre : sur le panneau d'achat, sur le cadenas d'une leçon, ou les deux. Les textes se remplacent un à un, « Ajouter au panier », « Retirer du panier », « Voir le panier », « Continuer dans le catalogue », le bouton de paiement et la phrase d'annonce des paliers ; sans texte saisi, celui proposé en gris. Dans le bouton de paiement, %1$d devient le nombre de cours et %2$s le total. La phrase d'annonce peut aussi être coupée d'une case.
Un panier propose « Continuer dans le catalogue », et un panier vide « Parcourir les cours », vers la page du catalogue choisie dans Réglages → Cartes et vignettes, ou vers l'archive automatique des cours si aucune page n'est choisie. Un cours gratuit, ou déjà acheté par l'élève, ne peut pas entrer au panier ; s'il y était, il en sort tout seul. Le panier vit dans le navigateur de l'élève pendant trente jours.
Toujours dans Réglages → Usage et paiement, la remise de volume récompense qui prend plusieurs cours : jusqu'à trois paliers, « à partir de 2 cours, −10 % », « à partir de 3 cours, −15 % ». Le plus haut palier atteint s'applique à tout le panier, après la remise propre de chaque cours. Le panneau d'achat annonce les paliers sous le bouton, et le panier dit ce qu'il manque pour atteindre le suivant : « Ajoutez 1 cours de plus et la remise passe à −15 % ». Sans palier, le panier ne fait que regrouper le paiement.
Avec un code de réduction Stripe, la règle des cours remisés vaut aussi pour la remise de volume : soit le champ code n'apparaît pas quand une remise s'applique déjà, soit le code s'ajoute par-dessus, selon votre choix au même endroit.
Le mode test de Stripe est étanche : ses clés, ses cartes fictives et ses ventes ne touchent jamais vos vrais paiements, même sur le compte qui les encaisse. Sur un site local, du type monsite.local, une seule chose ne marche pas : le webhook, car Stripe ne peut pas joindre votre ordinateur. Laissez le champ vide, le retour de l'élève sur le site suffit à ouvrir l'accès. Pour le vérifier quand même, l'outil en ligne de commande de Stripe sait relayer les événements vers une adresse locale ; ce n'est utile qu'à un développeur.
Au retour de Stripe, le site relit le paiement et ouvre l'accès. Si l'élève ferme la fenêtre avant de revenir, le webhook fait la même chose de son côté. Dans Stripe → Développeurs → Webhooks, ajoutez l'adresse indiquée dans les réglages pour l'événement checkout.session.completed, puis collez le secret de signature, whsec_…, dans le champ Secret du webhook. Cochez aussi charge.refunded pour qu'un remboursement retire l'accès tout seul, et, si vous proposez l'abonnement, invoice.paid, invoice.payment_failed, customer.subscription.updated et customer.subscription.deleted. Sans webhook, tout fonctionne quand même.
Un pack réunit des cours et les vend ensemble, moins cher que séparément. Tout se fait sur un seul écran, menu WebTV-Learning → Packs → Ajouter un pack, et il n'y a rien à créer chez Stripe.
Ce que voit le visiteur :
[wtl_pack_achat] et [wtl_pack_cours] là où vous les voulez. Vous pouvez alors écrire avant, entre et après : un témoignage sous les cartes, une foire aux questions, un second appel à l'achat. Dès qu'une des briques du pack figure dans le texte ([wtl_pack], [wtl_pack_achat], [wtl_pack_cours]), plus rien n'est posé d'office ; une autre brique, un quiz libre par exemple, n'y change rien ;[wtl_packs] que vous posez où vous voulez.Les règles :
Un organisme qui forme plusieurs personnes n'a rien à faire d'un achat par apprenant : il veut acheter dix places et les distribuer. Sans cette offre, il achète un accès et fait circuler le mot de passe — ce qui ne vous rapporte rien et abîme votre suivi.
Activez-la dans Réglages → Paiement → Lots de places. Réglez :
Ce que voit l'organisme. Sous le prix d'un cours ou d'un pack, un encart « Vous formez plusieurs personnes ? » avec le prix par place et un champ de quantité. Il paie chez Stripe comme pour un achat ordinaire, puis retrouve son lot dans Mon compte → Mes places : le compteur, un champ où coller les adresses de ses apprenants, et la liste des places données. Un compte est créé pour une adresse inconnue, et WordPress envoie à la personne son message « choisissez votre mot de passe » — vous pouvez décocher cet envoi, c'est alors à l'organisme de transmettre les identifiants.
La règle de reprise est écrite dans son écran, pour qu'il la connaisse : avec le réglage conseillé, une place se reprend tant que l'apprenant n'a pas ouvert sa première leçon ; après, elle est consommée. Cela le protège d'une adresse fautive et vous protège de la rotation — dix places qui serviraient à cinquante personnes dans l'année.
Quand une place est reprise, l'accès se ferme et l'apprenant sort du groupe. Le compte, lui, est supprimé s'il n'a jamais servi — le cas d'une adresse mal tapée : compte créé par cette place, jamais connecté, sans progression, sans autre accès, sans achat et sans groupe. Dans tous les autres cas, le compte reste : quelqu'un qui a déjà travaillé ne disparaît pas parce qu'un organisme reprend sa place. Vous pouvez désactiver cette suppression dans les réglages, et l'onglet Élèves propose de toute façon un bouton Supprimer sur les comptes qui n'ont jamais servi.
Chaque lot crée son groupe, dont l'acheteur est le responsable : il y retrouve le suivi de ses apprenants, l'évaluation d'entrée et de sortie s'il en règle une, et les relevés d'activité. Il n'entre jamais dans votre administration. De votre côté, les lots sont listés dans WebTV-Learning → Lots de places, en lecture : un lot naît d'un paiement, il ne se crée pas à la main.
Pour « tout le catalogue pendant une durée », ne passez pas par les places : c'est l'abonnement, juste en dessous.
Un paiement qui se renouvelle, chaque mois ou chaque année, et les cours s'ouvrent tant qu'il court. C'est une option, pas un autre modèle : vos cours et vos packs restent en vente à l'unité, et tant que la case reste décochée, rien ne change sur votre site.
Dans Réglages → Usage et paiement → Abonnement :
Rien à créer chez Stripe : ni produit, ni tarif, ni réglage du portail. L'extension décrit le prix à la caisse et prépare elle-même l'espace de gestion.
Où l'élève s'abonne. Posez la brique [wtl_abonnement] où vous voulez : page d'accueil, page du catalogue, page dédiée. Elle montre l'offre et un bouton par formule ; à un abonné, elle montre où en est son abonnement. L'offre figure aussi dans Mon compte → Mon abonnement. Un visiteur sans compte passe d'abord par Mon compte, puis arrive à la caisse.
Ce que voit l'abonné. Les cours couverts s'ouvrent, leur carte porte « Inclus dans mon abonnement » (le mot se change dans Les intitulés du catalogue), le panneau d'achat dit « Inclus dans votre abonnement ». Dans Mon compte, il lit la date de sa prochaine échéance et ouvre, d'un bouton, l'espace de gestion de Stripe : changer de carte, retrouver ses factures, résilier. Chaque échéance payée figure dans Mes achats, avec sa facture. Stripe ne renvoie pas l'élève tout seul après une résiliation : il revient par le lien « Retour vers… » en haut à gauche, et son compte lui dit alors que la résiliation est enregistrée, jusqu'à quelle date ses cours restent ouverts, et qu'il peut encore reprendre l'abonnement.
Les règles, à connaître avant de vendre :
Côté administration. L'onglet Ventes gagne un tableau Abonnés (formule, date de début, état) ; chaque échéance est une ligne du journal et de l'export, sous le numéro de sa facture. Donner un accès sait offrir un abonnement, pour une durée en jours (30 par défaut) : un geste commercial, une démonstration. Un abonnement payé se résilie chez Stripe, par l'élève ou par vous ; un abonnement offert se retire d'un clic.
Le webhook compte davantage ici. Un achat unique se passe très bien de webhook ; un abonnement vit dans la durée, et c'est le webhook qui annonce aussitôt un renouvellement, une carte refusée, une résiliation. Cochez pour lui quatre événements de plus : invoice.paid, invoice.payment_failed, customer.subscription.updated, customer.subscription.deleted. Sans webhook, le site redemande à Stripe où en est l'abonnement une fois l'échéance passée, et le bouton Relire les abonnements chez Stripe de l'onglet Ventes le fait à la demande.
Ce que Stripe facture. Les paiements récurrents passent par son service « Billing » : 0,7 % du montant, en plus de sa commission habituelle (tarif à l'usage relevé le 18 septembre 2026 ; vérifiez-le sur stripe.com). Un abonnement émet toujours une facture Stripe, que la case Facture de l'onglet Facturation soit cochée ou non.
Un remboursement d'échéance fait dans Stripe ne ferme pas l'abonnement : résiliez-le aussi dans Stripe si c'est ce que vous voulez.
Par défaut, l'élève reçoit le reçu de Stripe et la caisse ne lui demande que sa carte. La section Réglages → Facturation adapte le reste à votre situation, un choix à la fois. L'extension n'émet pas de facture elle-même : elle prépare des données propres pour Stripe, votre comptable ou votre outil de gestion. Pour les règles qui s'appliquent à vous, voyez votre comptable.
Un remboursement se fait dans Stripe, bouton Remboursement du paiement. Complet, il retire l'accès aux cours de ce paiement ; partiel, un geste commercial par exemple, il laisse l'accès et le journal le note. Avec le webhook, ajoutez-y l'événement charge.refunded et tout se fait seul. Sans webhook, cliquez Relire les remboursements chez Stripe dans l'onglet Ventes.
Un intranet d'entreprise, une association, une école : dans Réglages → Usage et paiement, choisissez ne vend rien. Tous les cours sont ouverts quoi que disent leurs fiches, et tout ce qui parle d'argent disparaît : prix, étiquettes « Gratuit », panneau d'achat, panier, filtres et tris par prix. Les prix saisis ne sont pas effacés, ils reviennent si vous changez d'avis.
Au même endroit, Réserver la lecture aux personnes connectées ferme les leçons à qui n'a pas de compte : seule la présentation d'un cours se lit, les autres leçons invitent à se connecter. Un intranet sait ainsi qui suit quoi, quiz et progression compris. Un auteur qui vend peut s'en servir aussi : un cours gratuit devient un moyen de faire connaissance, le visiteur crée un compte et peut consentir à vos e-mails. Les pages, elles, restent visibles de tous ; fermer le site entier est l'affaire de WordPress ou de votre réseau.
Réglages → Ventes journalise chaque achat, avec l'élève, le cours, la source et le montant, le client et la facture quand la facturation est réglée, et permet de retirer un accès. Au-dessus du journal, un champ de recherche porte sur toute la ligne — un nom, un cours, une référence Stripe — et trois menus le réduisent par cours, par source ou par état de l'accès ; un clic sur un titre de colonne trie, un second inverse. La date se trie par date et le montant par montant, pas par ce qui est écrit. Le tri et les filtres ne changent rien au fichier exporté. Le formulaire Donner un accès ouvre un cours à un élève qui a payé autrement, un financeur, un virement, un cadeau, pour une durée ou sans fin.
Une vidéo ajoutée, renommée, réordonnée ou rebalisée dans Streamlike n'apparaît sur le site qu'après Réglages → Catalogue → Actualiser le catalogue. Une barre de progression avance playlist par playlist, avec le nom de celle en cours ; avec beaucoup de playlists, comptez une à deux secondes par playlist. L'actualisation crée les cours des playlists nouvellement cochées, met les leçons des autres à jour, et respecte tout ce que vous avez rangé dans la boîte Leçons. Le titre et le texte des cours ne sont jamais réécrits.
Une vidéo déplacée d'une playlist à une autre suit : elle quitte l'ancien cours et arrive dans le nouveau. Une playlist devenue vide vide son cours, qui passe en brouillon : il quitte le catalogue et les moteurs de recherche, ses réglages restent. L'onglet Catalogue le signale ; décochez sa playlist si elle ne sert plus. Si la playlist se remplit à nouveau, l'actualisation vous le dit et c'est vous qui republiez le cours. Si Streamlike ne répond pas, rien n'est touché.
Deux réglages influencent l'actualisation, dans Réglages → Leçons :
L'extension se fonde sur des étiquettes et des champs qu'on peut oublier. Réglages → À compléter dresse le tableau, cours par cours : pas de présentation, leçons sans numéro, noms de fichiers non renommés, leçons sans description, chapitres incomplets, prix absent (sauf si « Gratuit, c'est voulu » est coché sur la fiche), niveau non renseigné, pas d'image, page vidée par une composition Oxygen. Chaque colonne s'explique au survol et sous le tableau. Après une correction dans Streamlike, actualisez le catalogue pour que le tableau la voie.
Réglages → Apparence règle toutes les briques à la fois, sans écrire une ligne de style. Chaque famille de réglages est un volet qui se déplie d'un clic ; l'aperçu, à droite, reste à l'écran et se met à jour à chaque changement. Un seul volet ouvert à la fois est coché au départ : ouvrir un volet referme les autres. Décochez-le pour en garder plusieurs ouverts, ou tout déplier. La page se souvient du volet où vous travailliez. L'aperçu est cliquable : un clic sur une zone, la carte, le panier, le programme, ouvre le volet de ses réglages et propose au-dessus les autres volets qui la concernent. Il suit chaque réglage en direct ; rien n'est enregistré tant que vous ne cliquez pas Enregistrer l'apparence.
Les onglets Réglages, Usage et paiement et Facturation se lisent de la même façon : chaque section y est un volet qui se déplie, un seul ouvert à la fois par défaut, et la page rouvre celui où vous étiez. Un volet replié enregistre quand même ses réglages : le fermer ne perd rien.
Quatre couleurs suffisent, les nuances intermédiaires en sont déduites :
Les cartes du catalogue et les vignettes des autres cours ont leurs propres réglages : l'image, son format, celui de l'image elle-même pour ne rien rogner, ou un format fixe pour une grille régulière, 16:9, 2:1, 3:2, 4:3 ou carré, en recadrant ou en montrant l'image entière ; fond, texte et texte secondaire, déduits des couleurs générales tant que vous ne choisissez rien ; taille, capitales, graisse, interligne et lignes du titre, c'est-à-dire le nombre de lignes qui lui sont réservées, le titre étant coupé au-delà et lisible en entier au survol, pour que toutes les bandes aient la même hauteur ; arrondi. C'est là qu'on fait des cartes sombres sur une page claire, ou l'inverse : le texte secondaire et les pastilles « Gratuit » et niveau se déduisent de la carte elle-même, ils restent lisibles quel que soit son fond.
Le lecteur vidéo vient de Streamlike : il vit dans un cadre à lui, et aucune de vos couleurs ni de vos retouches CSS ne l'atteint. Deux réglages lui sont transmis, dans son adresse :
Les logos eux-mêmes — l'image, le coin, la transparence — se créent et se règlent dans Streamlike, jamais ici : le bouton Récupérer mes logos ne fait que relire votre liste, et rien n'est jamais modifié là-bas depuis WebTV Learning. Le lien Créer un logo dans Streamlike vous y emmène ; revenez ensuite rafraîchir la liste. Le pour-cent affiché à côté de chaque nom est l'opacité que vous lui avez donnée : à 50 %, un logo clair disparaît sur une image claire.
Lire cette liste demande le droit Logo View sur votre clé d'API, dans la rubrique Apparence des droits d'une clé chez Streamlike. Une clé créée normalement les a tous, vous n'avez donc rien à faire. Mais si vous avez restreint la vôtre — c'est une bonne habitude — il faut lui ajouter celui-là : sans lui, la récupération répond « Votre clé d'API n'a pas le droit de lire vos logos », et le menu reste à deux choix.
Et chaque cours peut en décider autrement, dans sa fiche, à droite de l'écran de rédaction : Logo sur la vidéo y propose les mêmes choix, plus Comme le réglage du site, qui est la valeur de départ. De quoi poser la marque d'un client sur le cours qu'il vous a commandé, ou retirer le logo d'un seul cours sans toucher aux autres.
Les autres couleurs du lecteur — barre de progression, fond derrière la vidéo — se règlent dans le back-office Streamlike, dans une configuration de lecteur : elles valent alors aussi pour vos vidéos publiées ailleurs.
La colonne des leçons à côté du lecteur : fond, titres des leçons, numéros et durées, titres de section, fond et filet de la leçon en cours, déduits des couleurs générales tant que vous ne choisissez rien ; séparateurs entre les leçons ou non ; taille, capitales, graisse, interligne et lignes des titres de leçon, coupés au-delà et lisibles en entier au survol ; taille des titres de section ; largeur de la colonne, en pixels ou en pour-cent de la brique, le programme passant dessous dès que le lecteur n'aurait plus une fois et demie sa largeur, sur tablette en portrait par exemple ; hauteur, au-delà la liste défile, jamais plus de 80 % de la fenêtre ; largeur des vignettes.
La brique des vignettes vers d'autres cours : fond du cadre et couleur du titre, déduits tant que vous ne choisissez rien ; taille du titre ; largeur des vignettes, au minimum, elles se partagent la ligne ; lignes du titre des vignettes, réservées et coupées au-delà. Les vignettes elles-mêmes suivent la section Cartes.
Le bandeau des repères en tête de la page d'un cours : fond, libellés, les petits titres en capitales, et valeurs, déduits des couleurs générales tant que vous ne choisissez rien ; disposition, en ligne, les cases côte à côte, ou en colonne, empilées, pour une barre latérale ; séparateurs entre les cases ou non ; arrondi.
Les boutons du catalogue, catégories, prix, tri, et le champ de recherche : fond et texte des boutons, fond, texte et bord du bouton choisi, tous déduits des couleurs générales tant que vous ne choisissez rien ; forme, pilule, arrondie comme les angles, ou carrée ; taille ; capitales et graisse du texte ; hauteur des boutons ; espace entre eux ; épaisseur du bord, zéro pour un bouton sans trait ; largeur de la colonne quand les filtres sont à gauche ; pour les titres de groupe de cette colonne, couleur, taille, graisse, capitales, espacement des lettres et marge sous le titre.
Le bouton d'en-tête et sa pastille, le bouton « Ajouter au panier » plein ou en contour seul, la couleur de la ligne de remise et du total, la largeur des vignettes dans le panier. Sans couleur choisie, tout est déduit des couleurs générales, et l'aperçu montre le résultat.
Pour ce qui n'est pas réglable, un éditeur de style, posé après le reste : il l'emporte. Il colore la syntaxe, souligne une accolade manquante, et complète ce que vous tapez : le début d'un repère, .wtl-c, propose les repères des briques avec leur explication ; --car propose les variables ; col propose les propriétés, puis leurs valeurs. Entrée ou Tab pour accepter. Faites précéder chaque sélecteur de .wtl pour ne toucher qu'aux briques. La référence repliée sous le champ liste les variables et les repères de style qui ne changeront pas d'une version à l'autre : .wtl-cours .titre-lecon, --accent, et ainsi de suite. Les variables se redéfinissent comme le reste :
.wtl { --accent: #B4531F; }Rétablir l'apparence d'origine efface tout, retouches comprises.
cdn.streamlike.com, les vignettes de ses serveurs d'images. Le catalogue lui-même est lu par votre serveur, avec votre clé, jamais par le navigateur du visiteur.Tout cela sert l'élève, la reprise et son suivi, et votre comptabilité. Rien n'en est transmis à un tiers, hormis ce que Stripe reçoit pour encaisser et facturer.
L'export rend tout ce que la liste ci-dessus énumère, en clair. L'effacement retire tout, sauf les ventes : une vente est une pièce comptable, que la loi vous impose de conserver des années. On en retire donc le nom, la société, l'adresse et le numéro de TVA, on la détache du compte, et on garde la date, le montant, le cours et la référence du paiement. WordPress vous l'annonce à l'écran, avec le nombre de ventes concernées.
Les adresses laissées au bas d'un quiz libre, elles, sont effacées sans condition — y compris celles de gens qui n'ont jamais créé de compte, c'est le cas le plus fréquent.
Les formations financées font exception, par défaut. Pour un apprenant d'un groupe où une évaluation d'entrée et de sortie est réglée sur sa formation, et non dispensé, le centre doit pouvoir prouver au financeur que la formation a été suivie. Avant d'effacer, le site range donc son dossier de formation dans le groupe (suivi, séances, évaluations), puis efface le reste ; il fait de même quand le compte est supprimé. WordPress l'annonce à l'écran. Le droit à l'effacement cède devant une obligation légale de conservation : c'est à vous de savoir si vous y êtes soumis. Dans Réglages → Entretien → Pièces justificatives des formations financées, choisissez Tout effacer si ce n'est pas votre cas, et saisissez la durée de conservation exigée par votre financeur : elle court depuis la fin de la formation, s'applique aussitôt à tous les dossiers gardés, et les dossiers dont elle est passée s'effacent d'eux-mêmes. Sans durée saisie, rien ne s'efface seul — le RGPD demande pourtant une durée limitée : renseignez-la. Sans groupe évalué, rien de tout cela ne vous concerne.
Mentionnez Streamlike et Stripe dans votre politique de confidentialité, le jeton d'élève comme donnée pseudonyme, ce que voient les responsables et tuteurs de groupe, et le suivi de lecture si vous vous en servez pour un rapport remis à un tiers, un financeur par exemple : l'élève doit en être informé.
Avant d'écrire, deux réflexes font gagner des jours.
Dans Réglages → Réglages → Aide et diagnostic, un bouton Copier le rapport met dans votre presse-papier tout ce qu'il faut savoir de votre site : versions de l'extension, de WordPress et de PHP, thème, constructeur de pages, extension de cache, état de votre licence, nombre de cours et de leçons, résultat de la dernière actualisation, et la liste de vos extensions actives.
Collez-le dans votre message. Sans lui, la première réponse que vous recevrez sera une série de questions, et vous aurez perdu un aller-retour.
Le rapport ne contient aucune de vos clés — ni celle de Streamlike, ni celles de Stripe, ni votre clé de licence : il dit seulement si elles sont renseignées, et pour Stripe s'il s'agit d'une clé de test ou d'une clé réelle. Il ne contient aucune donnée de vos élèves : ni nom, ni adresse, ni jeton, seulement leur nombre. Il est en clair dans la zone de texte : relisez-le si vous le souhaitez avant de l'envoyer.
L'assistance porte sur l'extension : son installation, ses réglages, ses briques, et ce qu'elle fait de vos vidéos Streamlike. Elle ne porte pas sur votre thème, votre hébergement, votre constructeur de pages ni la construction de votre site.
Soit le catalogue n'a pas encore été actualisé, soit le cours a été ouvert avec un constructeur qui a remplacé sa page par une composition vide. Posez une brique dedans, ou retirez la composition. Connecté en administrateur, vous voyez un message là où une brique devrait être ; un visiteur ne voit rien.
Vérifiez le réglage Ordre des leçons. Si vos vidéos ne sont pas numérotées, rangez-les dans la boîte Leçons : votre ordre l'emporte et survit aux actualisations.
C'est le repli, et l'onglet Catalogue le signale après chaque actualisation, avec un lien vers la boîte Leçons du cours. Deux façons de faire taire l'alerte : glissez la leçon à sa place dans la boîte Leçons et enregistrez, ou renommez son fichier avec un numéro dans Streamlike puis actualisez. Une leçon rangée à la main n'est plus signalée.
Il vient d'un nom de fichier. Donnez un vrai titre dans Streamlike, ou tapez-le dans la boîte Leçons.
Posez la balise teaser sur la vidéo de présentation dans Streamlike, ou nommez-la comme le cours. Actualisez.
Il l'a probablement commencée sans compte, dans son navigateur, puis créé son compte : les deux ne se rejoignent pas. Sa progression connectée repart de là où il regarde désormais.
Vous êtes administrateur : vous voyez tout. Décochez le réglage L'auteur et l'administrateur voient toutes les leçons pour contrôler la page comme un élève.
Le cours a-t-il un prix ? Stripe est-il branché ? Sans clé, la fiche affiche « La vente n'est pas encore ouverte ».
Connecté en administrateur, le message affiche la raison donnée par Stripe : le plus souvent une clé mal copiée, ou une clé de test alors que le mode test est désactivé.
Une brique du même genre est déjà sur la page, dans le texte, un modèle, ou posée d'office. L'administrateur voit une note à l'endroit de la brique ignorée. Gardez-en une.
C'est normal : la vraie brique s'affiche sur la page publiée.
Actualisez le catalogue.
La langue d'un reçu est fixée au moment du paiement, d'après le client Stripe. Depuis la version 0.12.2, l'extension lui donne la langue de votre site : les paiements suivants sortent dans cette langue, un reçu déjà émis garde la sienne. Par sécurité, réglez aussi la Langue par défaut chez Stripe, dans Paramètres → Entreprise → E-mails aux clients.
Streamlike met quelques minutes à consolider ses chiffres. Relisez la mesure un peu plus tard. Une lecture de moins d'une seconde n'est jamais comptée.
Lisez la phrase sous le bouton : elle dit combien de leçons ont été interrogées. « 0 leçon lue sur 0 interrogée » signifie que l'élève n'a encore ouvert aucune leçon — il n'y avait rien à demander à Streamlike. « 0 sur 3 » signifie que Streamlike a bien été interrogé et qu'il n'a rien vu : soit la lecture est trop récente, soit elle n'a jamais eu lieu sur ce compte.
Si un droit manque à votre clé d'API, vous ne verrez plus « rien lu » mais un message d'erreur portant la réponse de Streamlike : la mesure s'arrête au lieu de vous présenter des zéros qui ressembleraient à une réponse.
Les deux ne mesurent pas la même chose. Le site note la position atteinte, et avancer le curseur la fait monter ; Streamlike ne compte que ce qui est passé à l'écran. Le signe ⚠ marque cet écart : l'élève a sans doute déplacé le curseur. La colonne « Manière de regarder » le confirme, avec le nombre de sauts et la durée sautée.
Un attribut que la brique ne connaît pas est ignoré sans message. Vérifiez son nom dans le tableau des briques. Une faute de singulier ou de pluriel est comprise, colonne pour colonnes par exemple ; une autre faute ne l'est pas.
Un pack s'affiche s'il est publié et s'il contient au moins un cours publié avec des leçons. Vérifiez ensuite Réglages → Cartes et vignettes → Les packs dans le catalogue : sur seulement là où vous posez la brique, il faut poser [wtl_packs]. La bande n'apparaît ni sur un catalogue restreint à une catégorie, ni sur une sélection.
Vous demandez des coordonnées de facturation, et il lui en manquait une. Il complète son profil, clique Enregistrer et poursuivre le paiement, et la caisse s'ouvre. Cela n'arrive qu'une fois.
Son échéance est passée sans que le site l'apprenne : pas de webhook, ou les quatre événements de l'abonnement n'y sont pas cochés. Le site redemande seul à Stripe, au plus toutes les six heures par élève ; pour ne pas attendre, Ventes → Relire les abonnements chez Stripe. Puis cochez les événements, voir L'abonnement : une option en plus.
Il n'apparaît que si l'abonnement est proposé (case cochée et au moins un prix) ou si l'élève en a déjà un. Un site réglé sur ne vend rien n'a pas d'abonnement.
Regardez d'abord l'onglet Ventes : si la vente y figure, le droit a bien été ouvert et le problème est ailleurs — demandez-lui de se déconnecter puis de se reconnecter.
Si la vente n'y figure pas alors que Stripe a bien encaissé, un cache est le coupable le plus probable. La page sur laquelle l'élève revient après avoir payé est celle qui ouvre son accès ; servie depuis un cache, elle n'exécute aucun code et n'ouvre rien. Vérifiez que votre extension de cache n'enregistre pas les pages des personnes connectées, puis ouvrez l'accès à la main depuis Ventes → Donner un accès.
Votre cache enregistre les pages des personnes connectées. Désactivez-le dans ses réglages — c'est décoché par défaut dans toutes les extensions sérieuses. Le bouton du compte écrit le prénom de l'élève dans la page : une page enregistrée emporte ce prénom vers le visiteur suivant.
Désactivez-la puis supprimez-la. Rien n'est effacé par défaut : cochez Effacer les réglages et les cours dans Réglages → Entretien avant de supprimer si vous voulez tout retirer. Rien n'est jamais touché dans Streamlike ni dans Stripe.
Rien ne correspond à cette recherche.