Logo d'entête du site tutoriel en ligne
Important: l'accès à nos formations et leur achat
 nécessite au préalable une inscription (gratuite) sur notre site.
 Vous pouvez le faire en suivant ce lien

WebTV-Learning Documentation

Concevoir son propre portail ELearning avec Web-TV-Learning pour Wordpress
User guide
Guide utilisateur

Using WebTV-Learning

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.

Contents

  1. Before you start
  2. Installing and connecting the site to Streamlike
  3. Preparing your videos in Streamlike
  4. Courses in WordPress
  5. Ordering lessons
  6. The pages of the site
  7. Composing with blocks
  8. Students
  9. Groups and tutoring
  10. Quizzes and the enforced path
  11. Selling a course
  12. What the visitor sees, what the student sees
  13. Keeping content up to date
  14. Completing what is missing
  15. Customising the appearance
  16. Privacy
  17. Frequently asked questions

Before you start

You need:

  • WordPress 6.4 or later, with PHP 7.4 or later;
  • a Streamlike account and an API key for it;
  • your videos organised in Streamlike playlists: one playlist per course;
  • to sell: a Stripe account. It is not needed to begin, nor for free courses.

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.

Installing and connecting the site to Streamlike

Installing the plugin

  1. In WordPress, open Plugins → Add New Plugin → Upload Plugin.
  2. Choose the webtv-learning.zip file, then Install Now and Activate.
  3. A WebTV-Learning menu appears in the left column, with three entries: Settings, Courses and Categories.
  4. In Settings → Licence and updates, paste the licence key you were given when you bought the plugin.

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.

If your site uses a cache

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.

Connecting the site to Streamlike

In WebTV-Learning → Settings, Streamlike access section:

  1. Paste your API key. It is created in the Streamlike back office, avatar menu → API/FTP keys, type “api”. Save.
  2. Open the Your courses box: the list of your playlists has loaded by itself, with each one's number of videos and duration. Tick the ones that are courses, then save. The Refresh the list button, under the boxes, is for when you create a playlist in Streamlike later on.
  3. Catalogue tab → Refresh the catalogue. One course is created per ticked playlist, with its videos as lessons.

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.

Set up the site in one click

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:

  • it only offers what is useful: the cart appears only if you turned it on;
  • it never replaces anything: a page already named below is left untouched, and the report says so. You can click twice without breaking anything;
  • it speaks your theme's language: a modern theme gets blocks, laid out at full width; a classic theme or a page builder — Oxygen, Elementor, Divi — gets the shortcodes, which work everywhere.

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.

The compositions

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.

Dressing the rest of the site

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.

  • It is a choice, off by default. We do not touch your theme unless you ask.
  • It is reversible. Untick, and your theme comes back exactly as it was. None of its files are changed.
  • The site's background and text are left alone, deliberately: that is what would break a dark theme.
  • The text colour on a button is deduced from your accent — white on a dark accent, ink on a light one — so a yellow accent never gives white on white.

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.

Preparing your videos in Streamlike

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.

Naming and numbering

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.

Three labels

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.

LabelDefaultEffect
Trailer tagteaserThe 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 taggratuitA lesson watchable without buying, inside a paid course. Those are your previews.
Chapter fieldchapitreA custom field whose value is the chapter name: lessons carrying it are grouped under that heading in the programme.

Description and image

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.

Token protection

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.

Courses in WordPress

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:

  • the title and the text: the title comes from the playlist at creation; then they belong to you, the refresh never rewrites them. The text is your presentation page: what the student will learn, who the course is for;
  • the excerpt, shown on the catalogue card;
  • the featured image, the course image;
  • on the right, the Course sheet box: the price (with no price, the course is free; tick “Free on purpose” so the To complete tab does not flag it), the level, the prerequisites, the language. Duration and number of lessons come from Streamlike;
  • on the right, Categories: tick the course's. Categories are managed in WebTV-Learning → Categories, like post categories, and feed the catalogue filters;
  • under the text, the Lessons box, described below.

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.

Ordering lessons

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.

  • Ordering: drag a row by its ⋮⋮ handle, or click the ▲ ▼ arrows. A click with the Shift key sends the row to the very top or bottom.
  • Section titles: grey rows, draggable like lessons. A title applies to every lesson until the next one. + New section title adds one at the bottom of the list; the cross removes one, its lessons join the previous section. Chapters coming from Streamlike appear as normal sections.
  • A lesson's title is edited directly in its row. With no title typed, it is Streamlike's title, recalled in grey below with the original name.
  • Edit in Streamlike: when hovering a row, this link opens the video's sheet in the Streamlike back office, in a new tab, to fix its name, description or tags. Then refresh the catalogue so the site sees it.
  • Free: yes, no, or as in Streamlike, that is, according to the tag.
  • Hide: the lesson stays in Streamlike but does not appear on the site. Its duration leaves the count.

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.

A lesson's summary, and its address

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.

The pages of the site

A course page

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.

The catalogue 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”:

  • by category: one button per category, plus “All”;
  • free or paid: three buttons;
  • search by title: a field that filters as you type, ignoring accents and case;
  • sorting, the visitor's choice: site order, title, newest, cheapest, free first.

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:

  • as a mosaic: a single grid of all the cards, the buttons filter the grid;
  • as rows: one titled row per category, scrolling sideways, like a WebTV, with two arrows to the right of the title as soon as it has more courses than columns. A course in two categories appears in both; courses without a category form a last “Other courses” row. The buttons then show a single row.

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=audio is 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.

A hand-picked selection

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.

What cards show

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.

Course order

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.

The “My account” page

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:

  • My courses: courses started or bought, with progress and quiz scores.
  • My tests: the free quizzes taken while logged in, with the profile of the latest attempt — score per theme, what is acquired and what needs work. What a student finds there is set per quiz, under What the student sees later: their score alone, their score and theme profile (the recommended setting), or everything — level profile and progress between attempts included. The right answers are never repeated here, and you always see the full detail in the student's record, with the latest score, the date, the best score, and a Take this test again button leading back to the page where it was taken. This panel only appears to someone who has taken at least one test. It is what lets a student find again a test placed on a shop-window page they no longer remember — and see their progress from one attempt to the next.
  • My purchases: one entry per payment, with its date, courses, amount, VAT if you charge it, a Receipt link to Stripe's receipt, an Invoice link if Stripe issues one, and any refund. The receipt is always there, whether or not receipt e-mails are enabled at Stripe; in test mode, Stripe sends none anyway. Checkout, the receipt and the invoice use your site's language, amounts and dates included. Their look, logo, colours, support contact details, is set at Stripe, in Settings → Business → Branding and Business details. Absent on a site that sells nothing.
  • My profile: first name, last name, e-mail address, password, and billing details when you ask for them.
  • My preferences: consent to your e-mails, changeable at any time.

With a page builder

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:

  • place an Inner Content element in it: the automatic layout shows inside;
  • place the blocks yourself, with the shortcodes below, in the order and layout of your choice.

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.

Composing with blocks

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.

With the WordPress editor's blocks

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.

Starting from a pattern

The Patterns tab of the inserter offers four ready-made pages, under WebTV-Learning:

PatternWhat it places
"Our courses" pageA heading and the catalogue
"My account" pageA heading and the student's area
"Cart" pageA heading and the cart
Home pageThe 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.

With shortcodes

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.

BlockWhat it showsAttributes
[wtl_cours]The player, the current lesson, the programmeid, 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 dateid, 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, websiteid
[wtl_selection]Hand-picked courses, from any category, in the given ordercours="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 coursessource="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 coursescolonnes, 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 itid (pack number or slug)
[wtl_pack_cours]The cards of a pack's courses, under a titleid, titre="In this pack" or "non", colonnes, elements
[wtl_pack]The two above, one after the otherid, titre, colonnes
[wtl_packs]The cards of your packstitre="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 alltitre; 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” otherwisetexte="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 offerednone
[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 menuquiz: 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 adviseid: 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 menutexte="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.

Block rules

  • An editor block is worth its shortcode, in every respect: same display, same duplicate counting, and a course page carrying a course block no longer composes itself, exactly as with a shortcode.
  • An attribute is spelled as in the table, but a singular or plural slip is understood: colonne="2" works like colonnes="2", element like elements. An attribute the block does not know is ignored.
  • One block per course and per page. A duplicate block is ignored; the administrator sees a note in its place, the visitor nothing. Two [wtl_autres_cours] of different sources are accepted.
  • A block placed where it can do nothing breaks nothing: [wtl_reperes] on a page that is not a course, without id, shows nothing.
  • A block placed in a builder's main template shows on every page. Course blocks belong in the “Courses” type template.

Students

Signing up

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.

Progress

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.

The Students tab

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.

  • "inactive for 21 days": they had started, they stopped.
  • "never started, access open for 40 days": their access is open, they never opened a single lesson. Not the same problem, so not the same follow-up.

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:

  • on the tutor's side, at the top of a group in My account → My groups, a "To chase" panel lists them, the furthest behind first, with a link to their sheet and a Write link that opens your mail software;
  • on the administrator's side, above the students list, one line counts the drop-outs and tells those who started then stopped from those who never started. The table's Last activity menu then keeps only them.

The panel only shows when there is someone to chase, and disappears when you set the delay to 0.

  • On the site: the position reached in the lesson. It drives resume and the enforced path. It also rises when the student drags the cursor forward.
  • How it was watched, inferred by the site from the player's signals: the time actually spent playing, pauses excluded; sped-up or slowed-down playback, with its average speed; forward jumps and the length skipped; backward jumps; the date of first playback. Watching at ×1.5 is not cheating: the sheet shows it, it sanctions nothing.
  • At Streamlike: what was actually played. The host measures it thanks to the student's anonymous token, passed by the player at every playback: the share of the lesson seen at least once, and the time watched relative to its length, which exceeds 100 % when the student replays a passage. This is the measure to keep for a report.

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 Audience tab

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.

The password that gets passed around

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.

The administrator

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.

Groups and tutoring

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.

Creating a group

In WebTV-Learning → Groups → Add a group:

  • A name, for example "InDesign session — March".
  • The manager and, if needed, the tutor, given by the e-mail address of their account on your site. They need no particular permission: an ordinary student account is enough. Being named on the group is what opens that group to them, and only that one. If the tutor is you, leave the box empty.
  • The students: type a name, a first name or part of an address in the search field, then click the student to add them; a single click in the field shows the latest sign-ups. You can also paste a list of addresses, one per line or separated by commas — the one the centre sent you works as it is. An address without an account is reported to you, never silently ignored. The chosen students join the group when you click Update.
  • Links, optional (see below).

A group follows all the courses of its students, not a chosen list.

What the manager and the tutor see

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.

The "prepare the session" sheet

Course by course, it answers the questions you ask yourself before a tutoring session:

  • When did they really start? The date of their first second actually watched — not when they opened the page —, next to the date their access opened. You see the gap between "bought on the 3rd" and "started on the 17th".
  • At what pace? The number of sessions, over how many days, the average gap between two working days, and the detail of each session: date, times, time watched, lessons.
  • What did they watch or not? Each lesson, watched, started or never opened, according to the site and to Streamlike.
  • What results? For each quiz, the score before the lesson, the best after, and the progress between the two.
  • Where to focus? The lessons to go back over — those whose quiz was not passed, and those linked to the questions missed in the final quiz — and the least successful themes.
  • A document for the file. The Activity report (to print) button opens a clean page, without the site's furniture: the learner, the course, the dates, the completed lessons, the time spent, every session, the entry and exit assessment with its skills, and the date of the appreciation. A button sends it to the printer or saves it as a PDF. It is not the official completion certificate — that one the training organisation writes and signs; the report is the supporting document, and it says so in its footer. The learner can print their own, the manager and the tutor those of their learners, you anyone's. The learner finds it in My account → My courses, under each course: "My activity report (to print)".

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.

What the student sees

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.

Entry and exit assessment

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:

  • Questionnaire: the free quiz to take. With no questionnaire chosen, no assessment for that course.
  • Exit from: the share of completed lessons that opens the exit assessment. 0%: from the start.
  • Who starts the exit: At this threshold: offered automatically (it appears once the threshold is reached, like the entry), or At this threshold: the learner chooses when — an "I feel ready" button appears, and they tick a box confirming they understand they get a single attempt. The threshold opens the door, this choice says who walks through it: before the threshold, the learner cannot start it. To let them choose from the start, set the threshold to 0%.
  • End of session: optional. On that day, the exit opens automatically for everyone, even if the course isn't finished — so that no funded learner is left without an exit assessment.

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.

The appreciation questionnaire

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).

What is not in the site

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.

Quizzes and the enforced path

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.

Writing a quiz

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:

  • the wording;
  • the form: a single correct answer, several correct answers, or true / false;
  • the possible answers, at least two, with the correct one(s) ticked;
  • an explanation, optional, shown after correction.
  • in the end-of-course quiz, the lesson the question checks: “If the answer is wrong, recommend reviewing…”. After the quiz, the student gets the list of lessons to review, each with its link; one click replays the lesson. The score becomes advice.

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.

What the student sees

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.

The rules

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.

The student's path: free or enforced

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.

The results

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.

Display, and what quizzes tell you

In Settings → Quizzes and path → Quiz display, for every course quiz:

  • all the questions on the page, or one question at a time with a progress bar, more pleasant on a phone as soon as a quiz has more than a few questions;
  • check each question as soon as it is answered: the student clicks “Check my answer”, sees the right answer and the explanation, then moves on. Learning happens while answering: this is the practice quiz. Immediate checking only applies if the right answers are shown after each attempt, and never on the before-the-lesson quiz. An answered question can no longer be changed: the first answer given is the one that counts in the score.

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.

The free quiz: a test outside any course

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 questions, with the same editor as in a course, the random draw and the shuffles. Give each question a theme (“Colour”, “Typography”, “Tables”): the result shows a score per theme, weakest first, with the number of questions asked on each and a “needs work” mark under 60%.

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 message according to the score: up to four levels. “From 0%: the basics need laying”; “from 70%: you master the essentials”. The visitor reads the message of the highest level they reach;
  • two paths per level, the second optional. Each leads wherever you want — a course, a pack, a page of your site, or an address of yours, even on another domain: the programme sheet of a classroom session, a form, a booking calendar. You write the button's wording. The first path shows as a filled button, the second as an outline; tick Both at the same level when neither should win — “learn online” or “be called back”, their choice. A single path to a course or a pack keeps the card with its image, as before;
  • the settings: a few lines of introduction; the display, one question at a time with a progress bar (the most pleasant on a phone) or all on the page; whether to show the right answers and explanations after the result; restricting the quiz to logged-in people;
  • first name and e-mail address, as you choose: ask for nothing, offer them under the result, or ask for them before showing it. The address is only kept if the person ticks the consent box (the text from Settings → Students). The site sends nothing: you find the addresses in the quiz, with the score, and export them. A logged-in person has nothing to type and sees the result straight away, even if you ask for the address before the result: the site already knows them. If they accepted e-mailing in their account, their play joins the list, marked “already a student” in the export; otherwise only their score is kept. Asking for the address before the result drives some visitors away: keep it for when the quiz is your way of collecting contacts.

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.

A quiz that orients instead of marking

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 > 4

An 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.

Selling a course

Setting a price

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.

Connecting Stripe, starting with the sandbox

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.

  1. In the Stripe dashboard, turn on the Test mode switch, top right.
  2. Developers → API keys menu: copy the secret key, which starts with sk_test_.
  3. Paste it in WebTV-Learning → Settings → Usage and payment → Stripe secret key. Save: Test mode shows next to it.
  4. On a paid course, logged in with a student account, click Buy this course. At Stripe, pay with card 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.

Discount codes

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.

The cart: several courses in one payment

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.

The volume discount

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.

Testing on a local site

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.

Packs: several courses at a bundle price

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.

  1. Give it a title, an introduction and, if you like, an image. Without one, the first course's image is used.
  2. Tick the courses of the pack; a search field helps find them. Drag them to order them: that is the order of the pack page.
  3. Set the price: a fixed price, or a percentage off the sum of the courses, which then follows by itself when a course changes price.
  4. The calculation happens before your eyes: “These 3 courses are worth 68.50 € bought separately. At 49.00 €, the student saves 19.50 €, that is −28 %.” The screen warns you if the pack costs as much as the separate courses, or has no price.
  5. Publish.

What the visitor sees:

  • The pack page, which composes itself: your text, the purchase panel with the struck-through value, the price and the saving, then the course cards. To decide otherwise, three ways, as for a course page:
    • in the pack's text, write [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;
    • in a page-builder template attached to packs, under Oxygen for instance, place these blocks around the Inner Content element, which renders your text. Those the template carries are not placed again, the others keep arriving with the text. Whatever you add under Inner Content applies to every pack. A changed template is picked up within ten minutes, or at once when you save the settings;
    • the Course page → composition setting on no switches automatic composition off, for packs as for courses.
  • A strip of cards at the top of the catalogue, marked “Pack · 3 courses”. In Settings → Cards and thumbnails, give it a title, or keep packs for the [wtl_packs] block you place wherever you like.
  • On the page of every course in the pack, under the purchase panel, a note: “This course is part of the Apple Motion pack: 3 courses for 49.00 € instead of 68.50 €”. It asks nothing of you, and it sells best.

The rules:

  • A student who already owns courses of the pack only pays for what is missing, at the pack rate: “You already have 2 courses out of 3: complete the pack for 21.46 €”.
  • A pack is frozen: the student keeps what they bought; a course you add to the pack later is not given to them.
  • A pack is already a discount: it stays out of the cart's volume discount, and Stripe promotion codes follow your stacking setting. A course put in the cart on its own while a pack in the cart contains it is not counted twice.
  • At Stripe, a pack is one line of the payment. On return, each course opens. The Sales tab keeps one line per course, with the pack name and each one's share; My purchases and the export say so too. A refund removes every course of the pack.
  • Grant access accepts a pack: all its courses at once, for a funder or a gift.

Seat bundles: the "training centre" offer

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:

  • from how many seats the group purchase is offered (5 by default);
  • the price of a seat — at 0, the course or pack's normal price, without the commercial discount you may have put on it: a retail discount and a volume discount do not stack;
  • tiers: 10 seats −20%, 25 seats −30%, as you like;
  • how long an access lasts, in months (12 by default, 0 for an access that never expires). That is what makes the offer renewable;
  • reclaiming a seat: as long as the learner has not started (recommended), never, or at any time.

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.

The subscription: one more option

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:

  • tick Also offer a subscription;
  • give a price per month, a price per year, or both: the student chooses. With no price at all, the subscription is not offered;
  • the name of the offer (“Subscription” by default, “Video pass” if you prefer) and its tagline;
  • what it opens: every paid course, today's and those to come, or only the courses in some categories;
  • the mention under the buy button of covered courses: “Or every course with the subscription: €9.00 per month, no commitment.” Untick it if you would rather show the offer in one place only.

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 cancellation, courses stay open until the end of the paid period, then close. No pro-rata refund. The student can change their mind while the period runs;
  • a purchased course stays owned, whatever happens to the subscription. A subscriber watches covered courses, they do not own them: a pack's top-up price therefore deducts nothing for them;
  • the subscription rents, the purchase keeps. A subscriber can buy a covered course to keep it after the subscription: under “Included in your subscription”, a discreet “Buy it to keep it” link, and the pack mention talks about keeping the course. The Let a subscriber buy… box controls it: unticked, a subscriber sees no purchase offer on what their subscription covers;
  • progress is always kept: whoever subscribes again picks up where they left off;
  • a declined card closes nothing on the spot: Stripe retries, the student is warned in My account, and courses close two days after the due date if nothing is settled;
  • changing your prices does not affect current subscribers: they keep theirs until they cancel;
  • the subscription does not go through the cart: a recurring payment does not mix with a one-off purchase. Stripe promotion codes do apply if you accept them; the coupon says whether it is good for one instalment or for all.

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.

Invoicing

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.

  • VAT. I do not charge VAT, for small-business exemptions or a non-profit: nothing changes. My prices include tax, with your rate: the displayed price stays the same, Stripe shows net and tax on the receipt and the invoice, and the Sales tab and its export break them down. One rate for the catalogue. Selling to consumers in other European countries may require other rates: that is what Stripe Tax is for, to enable at Stripe.
  • Billing details. None, first name, last name and address, or in addition, for a business, its company name and VAT number, optional so a private buyer is not blocked. The student enters them once, in “My account → My profile”, not at checkout: Stripe's payment page cannot reuse an address the site already knows, so it would be retyped at every purchase. If something is missing at payment time, the student is taken to the profile, then payment resumes by itself. They appear on the invoice, in the Sales tab and in the export, as they were on the day of purchase. At Stripe, each student becomes one and the same customer from purchase to purchase, not a “guest”: management tools connected to Stripe can work with it.
  • Invoice by Stripe. A checkbox, off to start with. Ticked, Stripe numbers an invoice after each payment, sends it to the student, and can issue a credit note. The student finds it through an Invoice link in “My account”, you in the Sales tab. It is a paid Stripe option, around 0.4 % of the amount, capped at about 2 € per invoice. Your name, address and company number are set at Stripe, in Settings → Business. The invoice footer is entered in our settings; in France, a VAT-exempt seller writes “TVA non applicable, art. 293 B du CGI” there.
  • Your own tool. Without Stripe invoices, the Export sales button of the Sales tab gives a spreadsheet file: one line per course sold, the payment reference, the student, the amount, net and tax, the status, the customer with address and VAT number, the invoice number if any.

Refunds

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 site that sells nothing

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.

The Sales tab

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.

What the visitor sees, what the student sees

  • The catalogue: course cards, filterable by category; on each, the level, the price or “Free”, the number of lessons and the duration.
  • A course page: your text; the key facts bar; the price and button, or “Free”; the player, with the introduction loaded first; the current lesson and its description; the programme, by sections, with watched lessons and progress on each thumbnail; the instructor; other courses.
  • Without an account: everything plays on a free course; on a paid course, the introduction and the free lessons, the others with a lock and an invitation to log in. Under the programme, a link offers to create an account to keep one's progress.
  • With an account: progress follows the student, their area lists their courses with a percentage, and “My other courses” lets them resume where they were.
  • After a purchase: “You are following this course”, all lessons open, the course marked “Purchased” in their area.

Keeping content up to date

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:

  • Lesson order: automatic, the leading number of the title if there is one; or the number alone; or the playlist order; or the date added;
  • Titles: make file names readable, or leave them as they are.

Completing what is missing

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.

Customising the appearance

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.

Colours

Four colours are enough, the intermediate shades are derived from them:

  • Main colour: buttons, links, progress, “Free” and “Watched” pills;
  • Player stage: the background behind the player and the current lesson. The text on it lightens or darkens by itself depending on whether the stage is dark or light;
  • Blocks background: behind the programme and thumbnails; cards and forms sit on it, one shade lighter;
  • Text colour.

Typography and shapes

  • Font: the system's, the theme's, serif, monospace, or another one your theme already loads, by its exact name. No font is downloaded from a third party.
  • Text size: from 80 to 140 %, every size follows.
  • Corner radius: zero for sharp corners.

Cards

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.

Player

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:

  • Play symbol and buttons: the large symbol at the centre of the video and the buttons laid over it. With no colour chosen they stay white — invisible on a light thumbnail. The setting applies to every lesson, protected ones included. The preview on the right does not show it: open a lesson to see it.
  • Logo on the video: the logo laid in a corner of the picture. Three choices. The one set on the video asks the player for nothing: each video keeps the logo you attached to it in Streamlike, exactly as for viewers watching it elsewhere. No logo removes it on your site without touching the video. Or you name one of your account's logos, and it applies to every lesson.

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.

Programme

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.

Other courses

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.

Key facts

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.

Filters

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.

Cart

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.

Spacing

  • Space between blocks: the air between key facts, purchase, course, instructor when they follow one another.
  • Inner margins: the air between a block's edge and its content, cards, programme, forms.

CSS touch-ups

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.

Privacy

  • Your pages only contact Streamlike to play videos and load images: the player comes from 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.
  • A student is identified to Streamlike by an opaque token, derived from their account number, never from their address or name. That is what allows resuming and, later, a per-student report.
  • The plugin keeps, per student:
    • the e-mailing consent, with its date and text;
    • the anonymous token passed to Streamlike;
    • progress per course: position in each lesson, lesson watched or not, first and last playback, time spent playing, average speed, forward and backward jumps;
    • quiz results: date, score and success of each attempt, and the point earned on each question;
    • their free-quiz scores, if they play logged in;
    • Streamlike's measure, when you have read it for that student: the share of each lesson actually played;
    • access rights and purchases: course, date, amount, payment reference;
    • billing details, if you ask for them, and the identifier of their customer at Stripe;
    • their subscription, if they have one: plan, start and period-end dates, status, identifier of the subscription at Stripe.
    • the journal of their viewing sessions: date, times, time watched and lessons of each session;
    • the groups they belong to, and in what role;
    • their entry and exit assessments: date, score, score per skill, course progress and how the exit was opened;
    • the date they gave their opinion of a course, and their answers if the questionnaire is named. Once erased, a named opinion becomes anonymous: it stays in the results, without their name.

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.

  • In a group, the manager and the tutor see the students' progress: what they watched, their sessions, their results. That is what a group is for, but the student must know it: say so in your privacy notice, and when you add them to the group. Students in the same group never see each other's progress.
  • A free quiz keeps nothing about a visitor, apart from anonymous counters (plays, average, success per question) — unless they leave their first name and address and tick the consent box: these are then kept with their score, in the quiz, until you erase them.
  • A student can ask for their data, or for it to be erased. WordPress has two screens for this, in Tools → Export Personal Data and Erase Personal Data: you enter an address, the site sends a confirmation e-mail, and the plugin supplies the rest.

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.

  • No card data goes through your site: payment happens at Stripe.
  • If you ask for billing details, the student enters them in their profile: name, company, address, VAT number. They are kept with the account, copied with each sale for your accounting, and sent to Stripe with their customer. They go with the rest if you tick the erase option before uninstalling.
  • On uninstall, nothing is erased by default. Tick Settings → Maintenance → Erase settings and courses before deleting the plugin to remove everything; student accounts remain, they are site users, only their role and our data go.

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.

Asking for help

Before writing, two reflexes will save you days.

Check these three things first

  • The page cache. A page served from a cache runs no code at all: a change does not show, and a logged-in student may be served someone else's page. Clear the cache, and check that your caching plugin does not store pages for logged-in users — it is unchecked by default everywhere, but it can be changed.
  • Your page builder. If a course page is empty, it has almost always been opened with the builder, which replaced its content with an empty composition. See A course page is empty, below.
  • Your Streamlike API key. If the catalogue no longer refreshes, or if tracking reports nothing, your key may have lost a permission. A restricted Streamlike key needs at least: playlist listing, company media viewing, playback token and analytics reporting. Add Logo View if you want to choose the logo laid on your videos.

Attach the diagnostic report

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.

What support covers

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.

Frequently asked questions

A course page is empty

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.

Lessons are out of order

Check the Lesson order setting. If your videos are not numbered, arrange them in the Lessons box: your order wins and survives refreshes.

An unnumbered lesson ends up at the end of the course

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.

A lesson title has no accents

It comes from a file name. Give it a real title in Streamlike, or type it in the Lessons box.

The introduction is not first

Set the teaser tag on the introduction video in Streamlike, or name it like the course. Refresh.

A student says they cannot find their progress

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.

I see “You are following this course” although I bought nothing

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.

The buy button does not appear

Does the course have a price? Is Stripe connected? Without a key, the sheet shows “Sales are not open yet”.

The payment could not start

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.

My block is ignored, another shows in its place

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.

In my builder I see a mockup

That is normal: the real block shows on the published page.

A change made in Streamlike does not appear

Refresh the catalogue.

The Stripe receipt is in English

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.

The tracking sheet says “nothing played” though the student just watched

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.

The site says “watched”, Streamlike says 4 %

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.

My attribute is ignored, nothing changes

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.

I cannot see my packs in the catalogue

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.

A student landed on their profile instead of checkout

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.

A subscriber paid but their courses closed again

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.

I cannot see the “My subscription” panel

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.

A student paid but does not see their course

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.

A visitor sees someone else's first name

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.

Uninstalling the plugin

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.

Utiliser WebTV-Learning

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.

Sommaire

  1. Avant de commencer
  2. Installer et relier le site à Streamlike
  3. Préparer ses vidéos dans Streamlike
  4. Les cours dans WordPress
  5. Ranger les leçons
  6. Les pages du site
  7. Composer avec les briques
  8. Les élèves
  9. Les groupes et le tutorat
  10. Les quiz et le parcours imposé
  11. Vendre un cours
  12. Ce que voit le visiteur, ce que voit l'élève
  13. Garder le contenu à jour
  14. Compléter ce qui manque
  15. Personnaliser l'apparence
  16. Confidentialité
  17. Questions fréquentes

Avant de commencer

Il vous faut :

  • WordPress 6.4 ou plus récent, avec PHP 7.4 ou plus récent ;
  • un compte Streamlike et une clé d'API de ce compte ;
  • vos vidéos rangées dans des playlists Streamlike : une playlist par cours ;
  • pour vendre : un compte Stripe. Il n'est pas nécessaire pour commencer, ni pour des cours gratuits.

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.

Installer et relier le site à Streamlike

Installer l'extension

  1. Dans WordPress, ouvrez Extensions → Ajouter une extension → Téléverser une extension.
  2. Choisissez le fichier webtv-learning.zip, puis Installer maintenant et Activer.
  3. Un menu WebTV-Learning apparaît dans la colonne de gauche, avec trois entrées : Réglages, Cours et Catégories.
  4. Dans Réglages → Licence et mises à jour, collez la clé de licence qui vous a été remise à l'achat.

À 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.

Si votre site utilise un cache

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.

Relier le site à Streamlike

Dans WebTV-Learning → Réglages, section Accès à Streamlike :

  1. Collez votre clé d'API. Elle se crée dans le back-office Streamlike, menu de votre avatar → Clés d'API/FTP, type « api ». Enregistrez.
  2. Ouvrez le volet Vos cours : la liste de vos playlists s'y est chargée toute seule, avec leur nombre de vidéos et leur durée. Cochez celles qui sont des cours, puis enregistrez. Le bouton Rafraîchir la liste, sous les cases, sert quand vous créez une playlist dans Streamlike après coup.
  3. Onglet Catalogue → Actualiser le catalogue. Un cours est créé par playlist cochée, avec ses vidéos en leçons.

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.

Monter le site d'un clic

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 :

  • elle ne propose que l'utile : le panier n'apparaît que si vous l'avez activé ;
  • elle ne remplace jamais rien : une page déjà désignée plus bas est laissée intacte, et le compte rendu vous le dit. Vous pouvez cliquer deux fois sans rien casser ;
  • elle parle la langue de votre thème : un thème moderne reçoit des briques, posées en pleine largeur ; un thème classique ou un constructeur de pages — Oxygen, Elementor, Divi — reçoit les codes courts, qui fonctionnent partout.

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.

Les compositions

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.

Habiller le reste du site

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.

  • C'est un choix, éteint d'origine. On ne touche pas à votre thème sans que vous le demandiez.
  • C'est réversible. Décochez, et votre thème revient exactement tel qu'il était. Aucun de ses fichiers n'est modifié.
  • Le fond et le texte du site ne sont pas touchés, volontairement : c'est ce qui casserait un thème sombre.
  • La couleur du texte des boutons se déduit de votre accent — blanche sur un accent sombre, encre sur un accent clair — pour qu'un accent jaune ne donne jamais du blanc sur blanc.

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.

Préparer ses vidéos dans Streamlike

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.

Nommer et numéroter

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.

Trois étiquettes

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.

ÉtiquettePar défautEffet
Balise de la bande-annonceteaserLa 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 gratuitesgratuitUne leçon lisible sans achat, à l'intérieur d'un cours payant. Vos extraits, c'est elles.
Champ du chapitrechapitreUn 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 et l'image

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.

La protection par jeton

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.

Les cours dans WordPress

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 :

  • le titre et le texte : le titre vient de la playlist à la création ; ensuite ils vous appartiennent, l'actualisation ne les réécrit jamais. Le texte est votre page de présentation : ce que l'élève va apprendre, à qui le cours s'adresse ;
  • l'extrait, affiché sur la carte du catalogue ;
  • l'image mise en avant, l'image du cours ;
  • à droite, la boîte Fiche du cours : le prix (sans prix, le cours est gratuit ; cochez « Gratuit, c'est voulu » pour que l'onglet À compléter ne le signale pas), le niveau, les prérequis, la langue. Durée et nombre de leçons viennent de Streamlike ;
  • à droite, Catégories : cochez celles du cours. Les catégories se gèrent dans WebTV-Learning → Catégories, comme les catégories d'articles, et servent aux filtres du catalogue ;
  • sous le texte, la boîte Leçons, décrite ci-dessous.

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.

Ranger les leçons

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.

  • Ranger : glissez une ligne par sa poignée ⋮⋮, ou cliquez les flèches ▲ ▼. Un clic avec la touche Maj envoie la ligne tout en haut ou tout en bas.
  • Les titres de section : des lignes grises, glissables comme les leçons. Un titre vaut pour toutes les leçons jusqu'au suivant. + Nouveau titre de section en ajoute un en bas de la liste ; la croix en retire un, ses leçons rejoignent la section précédente. Les chapitres venus de Streamlike apparaissent comme des sections normales.
  • Le titre d'une leçon se modifie directement dans sa ligne. Sans titre saisi, c'est celui de Streamlike, rappelé en gris en dessous avec le nom d'origine.
  • Modifier dans Streamlike : au survol d'une ligne, ce lien ouvre la fiche de la vidéo dans le back-office Streamlike, dans un nouvel onglet, pour corriger son nom, sa description, ses étiquettes. Actualisez ensuite le catalogue pour que le site le voie.
  • Gratuite : oui, non, ou comme Streamlike, c'est-à-dire selon la balise.
  • Masquer : la leçon reste dans Streamlike mais n'apparaît pas sur le site. Sa durée sort du décompte.

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.

Le résumé d'une leçon, et les adresses

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.

Les pages du site

La page d'un cours

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.

La page du catalogue

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 » :

  • par catégorie : un bouton par catégorie, plus « Tout » ;
  • gratuits ou payants : trois boutons ;
  • recherche par titre : un champ, qui filtre à mesure qu'on tape, accents et majuscules ignorés ;
  • tri au choix du visiteur : ordre du site, titre, plus récents, moins chers, gratuits d'abord.

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 :

  • en mosaïque : une seule grille de toutes les cartes, les boutons filtrent la grille ;
  • en rangées : une rangée titrée par catégorie, qui défile de côté, comme sur une WebTV, avec deux flèches à droite du titre dès qu'elle a plus de cours que de colonnes. Un cours de deux catégories apparaît dans les deux ; les cours sans catégorie forment une dernière rangée « Autres cours ». Les boutons montrent alors une rangée seule.

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=mao est 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.

Une sélection à la main

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.

Ce que montrent les cartes

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.

L'ordre des 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.

La page « Mon compte »

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 :

  • Mes cours : les cours entamés ou achetés, avec la progression et les scores de quiz.
  • Mes tests : les quiz libres passés en étant connecté, avec le profil du dernier passage — score par thème, ce qui est acquis et ce qui reste à travailler. Ce que l'élève retrouve là se règle quiz par quiz, dans Ce que l'élève revoit plus tard : son score seul, son score et son profil par thème (le réglage conseillé), ou tout — profil par niveau et progression d'un passage à l'autre compris. Les bonnes réponses ne sont jamais reprises ici, et vous, de votre côté, voyez toujours le détail complet dans la fiche de l'élève, avec le score du dernier passage, la date, le meilleur score, et un bouton Refaire ce test qui ramène à la page où il l'a passé. Ce volet n'apparaît qu'à qui a passé au moins un test. C'est ce qui permet à un élève de retrouver un test posé sur une page de vitrine dont il ne se souvient plus — et de voir sa progression d'un passage à l'autre.
  • Mes achats : un achat par paiement, avec sa date, ses cours, son montant, la TVA si vous en facturez, un lien Reçu vers le reçu de Stripe, un lien Facture si Stripe en émet une, et la mention d'un remboursement. Le reçu est toujours là, que l'e-mail de reçu soit activé chez Stripe ou non ; en mode test, Stripe n'en envoie d'ailleurs aucun. La caisse, le reçu et la facture sont dans la langue de votre site, montants et dates compris. Leur habillage, logo, couleurs, coordonnées du service client, se règle chez Stripe, dans Paramètres → Entreprise → Image de marque et Informations de l'entreprise. Absent d'un site qui ne vend rien.
  • Mon profil : prénom, nom, adresse e-mail, mot de passe, et les coordonnées de facturation quand vous en demandez.
  • Mes préférences : le consentement à vos e-mails, modifiable à tout moment.

Avec un constructeur de pages

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 :

  • y poser un élément Inner Content : la composition automatique s'y affiche ;
  • y poser vous-même les briques, avec les codes courts ci-dessous, dans l'ordre et la mise en page de votre choix.

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.

Composer avec les briques

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.

Avec les blocs de l'éditeur WordPress

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.

Partir d'une composition

L'onglet Compositions de l'insertion propose quatre pages toutes faites, dans la rubrique WebTV-Learning :

CompositionCe 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
AccueilLes 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.

Avec les codes courts

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.

BriqueCe qu'elle afficheAttributs
[wtl_cours]Le lecteur, la leçon en cours, le programmeid, 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 à jourid, 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, siteid
[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 courssource="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 courscolonnes, 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 partieid (numéro ou nom d'adresse du pack)
[wtl_pack_cours]Les cartes des cours d'un pack, sous un titreid, titre="Au programme" ou "non", colonnes, elements
[wtl_pack]Les deux précédentes à la suite, d'un blocid, titre, colonnes
[wtl_packs]Les cartes de vos packstitre="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 foistitre ; 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 » sinontexte="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 menuquiz : 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 conseillezid : 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 menutexte="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.

Les règles des briques

  • Un bloc vaut le code court correspondant, en tout : même affichage, même comptage des doublons, et la page d'un cours qui porte un bloc du cours ne se compose plus d'office, exactement comme avec un code court.
  • Un attribut s'écrit comme dans le tableau, mais une faute de singulier ou de pluriel est comprise : colonne="2" vaut colonnes="2", element vaut elements. Un attribut que la brique ne connaît pas est ignoré.
  • Une brique par cours et par page. Une brique en double est ignorée ; l'administrateur voit une note à sa place, le visiteur rien. Deux [wtl_autres_cours] de sources différentes sont acceptées.
  • Une brique posée là où elle ne peut rien faire ne casse rien : [wtl_reperes] sur une page qui n'est pas un cours, sans id, n'affiche rien.
  • Une brique posée dans le modèle principal d'un constructeur s'affiche sur toutes les pages. Les briques d'un cours ont leur place dans le modèle du type « Cours ».

Les élèves

S'inscrire

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 consentement à l'e-mailing

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.

La progression

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.

L'onglet Élèves

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.

  • « inactif depuis 21 jours » : il avait commencé, il s'est arrêté.
  • « jamais commencé, accès ouvert depuis 40 jours » : son accès est ouvert, il n'a jamais ouvert la moindre leçon. Ce n'est pas le même problème, donc pas la même relance.

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 :

  • côté tuteur, en tête d'un groupe dans Mon compte → Mes groupes, un encart « À relancer » les liste, le plus en retard d'abord, avec un lien vers leur fiche et un lien Écrire qui ouvre votre logiciel de courrier ;
  • côté administrateur, au-dessus de la liste des élèves, une ligne compte les décrocheurs et distingue ceux qui ont commencé puis se sont arrêtés de ceux qui n'ont jamais commencé. Le menu Dernière activité du tableau ne garde alors qu'eux.

L'encart ne s'affiche que s'il y a quelqu'un à relancer, et disparaît quand vous mettez le délai à 0.

  • Sur le site : la position atteinte dans la leçon. C'est elle qui sert la reprise de lecture et le parcours imposé. Elle monte aussi quand l'élève avance le curseur.
  • La manière de regarder, déduite par le site des signaux du lecteur : le temps réellement passé en lecture, pauses exclues ; une lecture accélérée ou ralentie, avec sa vitesse moyenne ; les sauts en avant et la durée sautée ; les retours en arrière ; la date de première lecture. Regarder en vitesse ×1,5 n'est pas tricher : la fiche le montre, elle ne sanctionne rien.
  • Chez Streamlike : ce qui a réellement été lu. L'hébergeur le mesure grâce au jeton anonyme de l'élève, que le lecteur lui transmet à chaque lecture : la part de la leçon vue au moins une fois, et le temps regardé rapporté à sa durée, qui dépasse 100 % quand l'élève revoit un passage. C'est la mesure à retenir pour un rapport.

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.

L'onglet Audience

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.

Le mot de passe qu'on se prête

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.

L'administrateur

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.

Les groupes et le tutorat

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.

Créer un groupe

Dans WebTV-Learning → Groupes → Ajouter un groupe :

  • Un nom, par exemple « Session InDesign — mars ».
  • Le responsable et, si besoin, le tuteur, désignés par l'adresse e-mail de leur compte sur votre site. Ils n'ont besoin d'aucun droit particulier : un compte d'élève ordinaire suffit. C'est d'être nommé sur le groupe qui leur ouvre ce groupe-là, et lui seul. Si le tuteur, c'est vous, laissez la case vide.
  • Les élèves : tapez un nom, un prénom ou un bout d'adresse dans le champ de recherche, puis cliquez sur l'élève pour l'ajouter ; un simple clic dans le champ montre les derniers inscrits. Vous pouvez aussi coller une liste d'adresses, une par ligne ou séparées par des virgules — celle que le centre vous a envoyée convient telle quelle. Une adresse sans compte vous est signalée, jamais ignorée en silence. Les élèves choisis rejoignent le groupe quand vous cliquez sur Mettre à jour.
  • Des liens, facultatifs (voir plus bas).

Un groupe suit tous les cours de ses élèves, pas une liste choisie.

Ce que voient le responsable et le tuteur

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.

La fiche « préparer la séance »

Elle répond, cours par cours, aux questions qu'on se pose avant une séance de tutorat :

  • Quand a-t-il vraiment commencé ? La date de sa première seconde réellement regardée — pas celle où il a ouvert la page —, à côté de la date d'ouverture de son accès. On voit l'écart entre « acheté le 3 » et « commencé le 17 ».
  • À quel rythme ? Le nombre de séances, sur combien de jours, l'écart moyen entre deux jours de travail, et le détail de chaque séance : date, horaires, temps regardé, leçons.
  • Qu'a-t-il vu ou pas ? Chaque leçon, vue, entamée ou jamais ouverte, selon le site et selon Streamlike.
  • Quels résultats ? Pour chaque quiz, le score avant la leçon, le meilleur après, et le progrès entre les deux.
  • Où insister ? Les leçons à reprendre — celles dont le quiz n'est pas réussi, et celles rattachées aux questions manquées du quiz de fin — et les thèmes les moins réussis.
  • Une pièce à verser au dossier. Le bouton Relevé d'activité (à imprimer) ouvre une page nette, sans le décor du site : l'apprenant, la formation, les dates, les leçons terminées, le temps passé, chaque séance, l'évaluation d'entrée et de sortie avec les compétences, et la date de l'appréciation. Un bouton l'envoie à l'imprimante ou l'enregistre en PDF. Ce n'est pas le certificat de réalisation officiel — ce document-là, c'est l'organisme qui l'établit et le signe ; le relevé en est la pièce d'appui, et il le dit en pied de page. L'apprenant peut éditer le sien, le responsable et le tuteur celui de leurs apprenants, vous celui de tout le monde. L'apprenant le trouve dans Mon compte → Mes cours, sous chaque cours : « Mon relevé d'activité (à imprimer) ».

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.

Ce que voit l'élève

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.

Les liens

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.

L'évaluation d'entrée et de sortie

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 :

  • Questionnaire : le quiz libre à passer. Sans questionnaire choisi, pas d'évaluation pour cette formation.
  • Sortie à partir de : la part des leçons terminées qui ouvre la sortie. 0 % : dès le départ.
  • Qui lance la sortie : À ce seuil : proposée d'office (elle apparaît dès le seuil atteint, comme l'entrée), ou À ce seuil : l'apprenant choisit quand — un bouton « Je me sens prêt » apparaît, et il coche une case confirmant qu'il a compris qu'il n'aura qu'un passage. Le seuil ouvre la porte, ce choix dit qui la franchit : avant le seuil, l'apprenant ne peut pas la lancer. Pour qu'il choisisse dès le départ, mettez le seuil à 0 %.
  • Fin de session : facultative. Ce jour-là, la sortie s'ouvre d'office pour tous, même si le parcours n'est pas fini — pour qu'aucun apprenant financé ne reste sans évaluation de sortie.

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é.

Le questionnaire d'appréciation

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).

Ce qui n'est pas dans le site

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.

Les quiz et le parcours imposé

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.

Écrire un quiz

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 :

  • l'énoncé ;
  • la forme : une seule bonne réponse, plusieurs bonnes réponses, ou vrai / faux ;
  • les réponses possibles, deux au moins, avec la ou les bonnes cochées ;
  • une explication, facultative, montrée après la correction.
  • dans le quiz de fin de cours, la leçon que la question contrôle : « Si la réponse est fausse, conseiller de revoir… ». Après le quiz, l'élève reçoit la liste des leçons à revoir, chacune avec son lien ; un clic relance la leçon. Le score devient un conseil.

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.

Ce que voit l'élève

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.

Les règles

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.

Le parcours de l'élève : libre ou imposé

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.

Les résultats

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.

L'affichage, et ce que les quiz vous apprennent

Dans Réglages → Quiz et parcours → Affichage des quiz, pour tous les quiz des cours :

  • toutes les questions sur la page, ou une question à la fois avec une barre d'avancement, plus agréable sur un téléphone dès qu'un quiz dépasse quelques questions ;
  • corriger chaque question dès qu'elle est validée : l'élève clique « Vérifier ma réponse », voit la bonne réponse et l'explication, puis passe à la suivante. On apprend en répondant : c'est le quiz d'entraînement. Cette correction immédiate n'agit que si les bonnes réponses sont montrées après chaque tentative, et jamais sur le quiz d'avant la leçon. Une question validée ne se modifie plus : c'est la première réponse donnée qui compte dans le score.

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.

Le quiz libre : un test hors cours

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 :

  • les questions, avec le même éditeur que dans un cours, le tirage au sort et les mélanges. Donnez à chaque question un thème (« Couleur », « Typographie », « Tableaux ») : le résultat montre un score par thème, du plus faible au plus fort, avec le nombre de questions posées sur chacun et la mention « à travailler » sous 60 %.

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 ;

  • le message selon le score : jusqu'à quatre paliers. « À partir de 0 % : les bases sont à poser » ; « à partir de 70 % : vous maîtrisez l'essentiel ». Le visiteur lit le message du palier le plus haut qu'il atteint ;
  • deux chemins par palier, le second facultatif. Chacun mène où vous voulez — un cours, un pack, une page de votre site, ou une adresse à vous, fût-elle sur un autre domaine : la fiche programme d'une session en salle, un formulaire, un agenda de rendez-vous. Vous écrivez le texte du bouton. Le premier chemin s'affiche en bouton plein, le second en contour ; cochez Les deux au même niveau quand aucun ne doit l'emporter — « se former en ligne » ou « être rappelé », à la personne de choisir. Un seul chemin vers un cours ou un pack garde la carte avec son image, comme avant ;
  • les réglages : quelques lignes de présentation ; l'affichage, une question à la fois avec une barre d'avancement (le plus agréable sur un téléphone) ou toutes sur la page ; montrer ou non les bonnes réponses et les explications après le résultat ; réserver le quiz aux personnes connectées ;
  • prénom et adresse e-mail, au choix : ne rien demander, les proposer sous le résultat, ou les demander avant de l'afficher. L'adresse n'est gardée que si la personne coche la case de consentement (le texte de Réglages → Élèves). Le site n'envoie rien : vous retrouvez les adresses dans le quiz, avec le score, et les exportez. Une personne connectée n'a rien à saisir et voit son résultat tout de suite, même si vous demandez l'adresse avant le résultat : le site la connaît déjà. Si elle a accepté l'e-mailing dans son compte, son passage rejoint la liste, marqué « déjà élève » dans l'export ; sinon seul son score est gardé. Demander l'adresse avant le résultat fait fuir une partie des visiteurs : à réserver au cas où le quiz est votre façon de recueillir des contacts.

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.

Un quiz qui oriente au lieu de noter

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 > 4

Une 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.

Vendre un cours

Donner un prix

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.

Brancher Stripe, en commençant par le bac à sable

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à.

  1. Dans le tableau de bord Stripe, activez l'interrupteur Mode test, en haut à droite.
  2. Menu Développeurs → Clés API : copiez la clé secrète, qui commence par sk_test_.
  3. Collez-la dans WebTV-Learning → Réglages → Usage et paiement → Clé secrète Stripe. Enregistrez : la mention Mode test s'affiche à côté.
  4. Sur un cours payant, connecté avec un compte élève, cliquez Acheter ce cours. Chez Stripe, payez avec la carte 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.

Les codes de réduction

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.

Le panier : plusieurs cours en un seul paiement

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.

La remise de volume

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.

Tester sur un site local

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.

Le webhook, facultatif mais conseillé

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.

Les packs : plusieurs cours à un prix d'ensemble

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.

  1. Donnez un titre, un texte de présentation et, si vous voulez, une image. Sans image, celle du premier cours.
  2. Cochez les cours du pack ; un champ de recherche aide à les trouver. Glissez-les pour les ordonner : c'est l'ordre de la page du pack.
  3. Fixez le prix : un prix fixe, ou une remise en pour-cent sur la somme des cours, qui suit alors toute seule quand un cours change de prix.
  4. Le calcul se fait sous vos yeux : « Ces 3 cours valent 68,50 € achetés séparément. À 49,00 €, l'élève économise 19,50 €, soit −28 %. » L'écran prévient si le pack coûte autant que les cours séparés, ou s'il n'a pas de prix.
  5. Publiez.

Ce que voit le visiteur :

  • La page du pack, qui se compose seule : votre texte, le panneau d'achat avec la valeur barrée, le prix et l'économie, puis les cartes des cours. Pour en décider autrement, trois moyens, comme pour la page d'un cours :
    • dans le texte du pack, écrivez [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 ;
    • dans un modèle de constructeur rattaché aux packs, sous Oxygen par exemple, posez ces briques autour de l'élément Inner Content, qui rend votre texte. Celles que le modèle porte ne sont pas reposées, les autres continuent d'arriver avec le texte. Tout ce que vous ajoutez sous l'Inner Content vaut pour tous les packs. Un modèle modifié est pris en compte dans les dix minutes, ou aussitôt en enregistrant les réglages ;
    • le réglage Page d'un cours → composition sur non coupe la composition d'office, pour les packs comme pour les cours.
  • Une bande de cartes en tête du catalogue, marquées « Pack · 3 cours ». Dans Réglages → Cartes et vignettes, donnez-lui un titre, ou réservez les packs à la brique [wtl_packs] que vous posez où vous voulez.
  • Sur la page de chaque cours du pack, sous le panneau d'achat, un encart : « Ce cours fait partie du pack Apple Motion : 3 cours pour 49,00 € au lieu de 68,50 € ». Il ne vous demande rien, et c'est lui qui vend le mieux.

Les règles :

  • Un élève qui possède déjà des cours du pack ne paie que ce qui lui manque, au tarif du pack : « Vous avez déjà 2 cours sur 3 : complétez le pack pour 21,46 € ».
  • Un pack est figé : l'élève garde ce qu'il a acheté ; un cours que vous ajoutez plus tard au pack ne lui est pas donné.
  • Un pack est déjà une remise : il reste hors de la remise de volume du panier, et les codes de réduction Stripe suivent votre réglage de cumul. Un cours mis au panier seul alors qu'un pack du panier le contient n'est pas compté deux fois.
  • Chez Stripe, un pack est une ligne du paiement. Au retour, chaque cours s'ouvre. L'onglet Ventes garde une ligne par cours, avec le nom du pack et la part de chacun ; Mes achats et l'export le disent aussi. Un remboursement retire tous les cours du pack.
  • Donner un accès accepte un pack : tous ses cours d'un coup, pour un financeur ou un cadeau.

Les lots de places : l'offre « centre »

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 :

  • À partir de combien de places l'achat groupé est proposé (5 par défaut) ;
  • le prix d'une place — à 0, c'est le prix normal du cours ou du pack, sans la remise commerciale que vous auriez posée dessus : une remise pour particuliers et une remise de volume ne se cumulent pas ;
  • des paliers : 10 places −20 %, 25 places −30 %, comme vous voulez ;
  • la durée d'un accès ouvert par une place, en mois (12 par défaut, 0 pour un accès sans fin). C'est ce qui rend l'offre renouvelable ;
  • la reprise d'une place : tant que l'apprenant n'a pas commencé (conseillé), jamais, ou à tout moment.

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.

L'abonnement : une option en plus

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 :

  • cochez Proposer aussi un abonnement ;
  • donnez un prix par mois, un prix par an, ou les deux : l'élève choisit. Sans aucun prix, l'abonnement n'est pas proposé ;
  • le nom de l'offre (« Abonnement » par défaut, « Pass vidéo » si vous préférez) et sa phrase d'accroche ;
  • ce qu'il ouvre : tous les cours payants, ceux d'aujourd'hui et ceux à venir, ou seulement les cours de certaines catégories ;
  • le rappel sous le bouton d'achat des cours couverts : « Ou tous les cours avec l'abonnement : 9,00 € par mois, sans engagement. » Décochez-le si vous préférez ne le montrer qu'à un endroit.

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 :

  • à la résiliation, les cours restent ouverts jusqu'à la fin de la période payée, puis se referment. Pas de remboursement au prorata. L'élève peut revenir sur sa décision tant que la période court ;
  • un cours acheté reste acquis, quoi que devienne l'abonnement. L'abonné lit les cours couverts, il ne les possède pas : le complément d'un pack ne lui déduit donc rien ;
  • l'abonnement loue, l'achat garde. Un abonné peut acheter un cours couvert pour le conserver après son abonnement : sous « Inclus dans votre abonnement », un lien discret « L'acheter pour le garder », et l'encart des packs lui parle de garder le cours. La case Laisser un abonné acheter… le commande : décochée, un abonné ne voit aucune offre d'achat sur ce que son abonnement couvre ;
  • la progression est toujours gardée : qui se réabonne retrouve où il en était ;
  • une carte refusée ne ferme rien sur-le-champ : Stripe relance, l'élève est prévenu dans Mon compte, et les cours se referment deux jours après l'échéance si rien n'est réglé ;
  • changer vos prix ne touche pas les abonnés en cours : ils gardent le leur jusqu'à leur résiliation ;
  • l'abonnement ne passe pas par le panier : un paiement qui se répète ne se mélange pas à un achat unique. Les codes de réduction Stripe, eux, s'appliquent si vous les acceptez ; c'est le coupon qui dit s'il vaut pour une échéance ou pour toutes.

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.

La facturation

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.

  • La TVA. Je ne facture pas de TVA, pour la franchise en base ou une association : rien ne change. Mes prix sont toutes taxes comprises, avec votre taux : le prix affiché ne bouge pas, Stripe fait apparaître le hors-taxes et la taxe sur le reçu et la facture, l'onglet Ventes et son export les ventilent. Un seul taux pour le catalogue. La vente à des particuliers d'autres pays d'Europe peut relever d'autres taux : c'est le rôle de Stripe Tax, à activer chez Stripe.
  • Les coordonnées de facturation. Aucune, prénom, nom et adresse, ou en plus, pour une entreprise, sa société et son numéro de TVA, facultatifs pour ne pas bloquer un particulier. L'élève les saisit une fois, dans « Mon compte → Mon profil », et non à la caisse : la page de paiement de Stripe ne sait pas reprendre une adresse déjà connue, il la retaperait à chaque achat. S'il en manque au moment de payer, il est conduit à son profil, puis le paiement reprend tout seul. Elles figurent sur la facture, dans l'onglet Ventes et dans l'export, telles qu'au jour de l'achat. Chez Stripe, chaque élève devient un seul et même client d'achat en achat, et non un « invité » : les outils de gestion branchés sur Stripe s'y retrouvent.
  • La facture par Stripe. Une case, décochée au départ. Cochée, Stripe numérote une facture après chaque paiement, l'envoie à l'élève, et sait en faire un avoir. L'élève la retrouve par un lien Facture dans « Mon compte », vous dans l'onglet Ventes. C'est une option payante de Stripe, de l'ordre de 0,4 % du montant, plafonnée autour de 2 € par facture. Vos nom, adresse et SIRET se règlent chez Stripe, dans Paramètres → Entreprise. La mention en pied de facture se saisit dans nos réglages ; en France, un vendeur en franchise y porte « TVA non applicable, art. 293 B du CGI ».
  • Votre propre outil. Sans facture Stripe, le bouton Exporter les ventes de l'onglet Ventes donne un fichier pour tableur : une ligne par cours vendu, la référence du paiement, l'élève, le montant, le hors-taxes et la taxe, l'état, le client avec son adresse et son numéro de TVA, le numéro de facture s'il y en a un.

Les remboursements

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 site qui ne vend rien

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.

L'onglet Ventes

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.

Ce que voit le visiteur, ce que voit l'élève

  • Le catalogue : les cartes des cours, filtrables par catégorie ; sur chacune, le niveau, le prix ou « Gratuit », le nombre de leçons et la durée.
  • La page d'un cours : votre texte ; la bande des repères ; le prix et le bouton, ou « Gratuit » ; le lecteur, avec la présentation chargée d'abord ; la leçon en cours et sa description ; le programme, par sections, avec les leçons vues et la progression sur chaque vignette ; le formateur ; d'autres cours.
  • Sans compte : tout se lit sur un cours gratuit ; sur un cours payant, la présentation et les leçons gratuites, les autres avec un cadenas et une invitation à se connecter. Sous le programme, un lien propose de créer un compte pour garder sa progression.
  • Avec un compte : la progression suit l'élève, son espace liste ses cours avec un pourcentage, et « Mes autres cours » lui permet de reprendre où il en était.
  • Après un achat : « Vous suivez ce cours », toutes les leçons ouvertes, le cours marqué « Acheté » dans son espace.

Garder le contenu à jour

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 :

  • Ordre des leçons : automatique, le numéro en tête du titre s'il y en a un ; ou le numéro seul ; ou l'ordre de la playlist ; ou la date d'ajout ;
  • Titres : rendre lisibles les noms de fichiers, ou les laisser tels quels.

Compléter ce qui manque

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.

Personnaliser l'apparence

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.

Couleurs

Quatre couleurs suffisent, les nuances intermédiaires en sont déduites :

  • Couleur principale : boutons, liens, progression, pastilles « Gratuit » et « Vu » ;
  • Scène du lecteur : le fond derrière le lecteur et la leçon en cours. Le texte qui s'y pose s'éclaircit ou s'assombrit tout seul selon que la scène est sombre ou claire ;
  • Fond des briques : derrière le programme et les vignettes ; cartes et formulaires sont posés dessus, un ton plus clair ;
  • Couleur du texte.

Typographie et formes

  • Police : celle du système, celle du thème, avec empattements, chasse fixe, ou une autre que votre thème charge déjà, par son nom exact. Aucune police n'est téléchargée depuis un tiers.
  • Taille du texte : de 80 à 140 %, toutes les tailles suivent.
  • Arrondi des angles : zéro pour des angles vifs.

Cartes

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.

Lecteur

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 :

  • Symbole de lecture et boutons : le gros symbole au centre de la vidéo et les boutons posés par-dessus. Sans couleur choisie, ils restent blancs — donc invisibles sur une vignette claire. Le réglage vaut pour toutes vos leçons, y compris protégées. L'aperçu à droite ne le montre pas : ouvrez une leçon pour le voir.
  • Logo sur la vidéo : le logo posé dans un coin de l'image. Trois choix. Celui posé sur la vidéo ne demande rien au lecteur : chaque vidéo garde le logo que vous lui avez attaché dans Streamlike, exactement comme pour les spectateurs qui la regardent ailleurs. Aucun logo le retire sur votre site, sans toucher à la vidéo. Ou bien vous nommez l'un des logos de votre compte, et il s'applique à toutes vos leçons.

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.

Programme

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.

Autres cours

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.

Cartouche

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.

Filtres

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.

Panier

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.

Espacements

  • Espace entre les briques : l'air entre les repères, l'achat, le cours, le formateur quand ils se suivent.
  • Marges intérieures : l'air entre le bord d'une brique et son contenu, cartes, programme, formulaires.

Retouches CSS

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.

Confidentialité

  • Vos pages ne contactent Streamlike que pour lire les vidéos et les images : le lecteur vient de 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.
  • Un élève est identifié auprès de Streamlike par un jeton opaque, dérivé de son numéro de compte, jamais de son adresse ni de son nom. C'est ce qui permet la reprise et, plus tard, un rapport par élève.
  • L'extension conserve, par élève :
    • le consentement à l'e-mailing, avec sa date et son texte ;
    • le jeton anonyme transmis à Streamlike ;
    • la progression par cours : position dans chaque leçon, leçon vue ou non, première et dernière lecture, temps passé en lecture, vitesse moyenne, sauts en avant et retours en arrière ;
    • les résultats des quiz : date, score et réussite de chaque tentative, et le point obtenu à chaque question ;
    • ses scores aux quiz libres, s'il y joue connecté ;
    • la mesure de Streamlike, quand vous l'avez relue pour cet élève : part de chaque leçon réellement vue ;
    • ses droits d'accès et ses achats : cours, date, montant, référence du paiement ;
    • ses coordonnées de facturation, si vous en demandez, et l'identifiant de son client chez Stripe ;
    • son abonnement, s'il en a un : formule, dates de début et de fin de période, état, identifiant de l'abonnement chez Stripe.
    • le journal de ses séances de lecture : date, horaires, temps regardé et leçons de chaque séance ;
    • les groupes dont il fait partie, et à quel titre ;
    • ses évaluations d'entrée et de sortie : date, score, score par compétence, avancement du parcours et mode d'ouverture ;
    • la date à laquelle il a donné son avis sur une formation, et ses réponses si le questionnaire est nominatif. Effacé, son avis nominatif devient anonyme : il reste dans les résultats, sans son nom.

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.

  • Dans un groupe, le responsable et le tuteur voient la progression des élèves : ce qu'ils ont vu, leurs séances, leurs résultats. C'est le rôle d'un groupe, mais l'élève doit le savoir : dites-le dans votre politique de confidentialité, et au moment de l'inscrire dans le groupe. Les élèves d'un même groupe, eux, ne voient jamais la progression les uns des autres.
  • Un quiz libre ne garde rien d'un visiteur, hors des compteurs anonymes (passages, moyenne, réussite par question) — sauf s'il laisse son prénom et son adresse en cochant la case de consentement : ils sont alors gardés avec son score, dans le quiz, jusqu'à ce que vous les effaciez.
  • Un élève peut demander ses données, ou leur effacement. WordPress a deux écrans pour cela, dans Outils → Exporter les données personnelles et Effacer les données personnelles : on y saisit une adresse, le site envoie un courriel de confirmation, et l'extension répond avec le reste.

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.

  • Aucune donnée de carte ne passe par votre site : le paiement a lieu chez Stripe.
  • Si vous demandez des coordonnées de facturation, l'élève les saisit dans son profil : nom, société, adresse, numéro de TVA. Elles sont gardées avec son compte, copiées avec chaque vente pour votre comptabilité, et transmises à Stripe avec son client. Ils partent avec le reste si vous cochez l'effacement avant de désinstaller.
  • À la désinstallation, rien n'est effacé par défaut. Cochez Réglages → Entretien → Effacer les réglages et les cours avant de supprimer l'extension pour tout retirer ; les comptes des élèves restent, ce sont des utilisateurs du site, seuls leur rôle et nos données partent.

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é.

Demander de l'aide

Avant d'écrire, deux réflexes font gagner des jours.

Regardez d'abord ces trois choses

  • Le cache de page. Une page servie depuis un cache n'exécute aucun code : une modification ne se voit pas, et un élève connecté peut recevoir la page d'un autre. Videz le cache, et vérifiez que votre extension de cache ne garde pas les pages des personnes connectées — c'est décoché par défaut partout, mais cela se change.
  • Votre constructeur de pages. Si une page de cours est vide, elle a presque toujours été ouverte avec le constructeur, qui a remplacé son contenu par une composition vide. Voir La page d'un cours est vide, plus bas.
  • Votre clé d'API Streamlike. Si le catalogue ne s'actualise plus, ou si le suivi ne rapporte rien, votre clé a peut-être perdu un droit. Une clé restreinte chez Streamlike doit porter au moins : liste des playlists, consultation des médias du compte, jeton de lecture et rapports d'audience. Ajoutez-y Logo View si vous voulez choisir le logo posé sur vos vidéos.

Joignez le rapport de diagnostic

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.

Ce sur quoi porte l'assistance

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.

Questions fréquentes

La page d'un cours est vide

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.

Les leçons sont dans le désordre

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.

Une leçon sans numéro finit en bout de cours

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.

Le titre d'une leçon est sans accents

Il vient d'un nom de fichier. Donnez un vrai titre dans Streamlike, ou tapez-le dans la boîte Leçons.

La présentation n'est pas en tête

Posez la balise teaser sur la vidéo de présentation dans Streamlike, ou nommez-la comme le cours. Actualisez.

Un élève dit ne pas retrouver sa progression

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.

Je vois « Vous suivez ce cours » alors que je n'ai rien acheté

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 bouton d'achat n'apparaît pas

Le cours a-t-il un prix ? Stripe est-il branché ? Sans clé, la fiche affiche « La vente n'est pas encore ouverte ».

Le paiement n'a pas pu démarrer

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é.

Ma brique est ignorée, une autre s'affiche à sa place

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.

Dans mon constructeur, je vois une maquette

C'est normal : la vraie brique s'affiche sur la page publiée.

Une modification faite dans Streamlike n'apparaît pas

Actualisez le catalogue.

Le reçu de Stripe est en anglais

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.

La fiche de suivi dit « rien lu » alors que l'élève vient de regarder

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.

Le site dit « vue », Streamlike dit 4 %

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.

Mon attribut est ignoré, rien ne change

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.

Je ne vois pas mes packs dans le catalogue

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.

Un élève est arrivé sur son profil au lieu de la caisse

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.

Un abonné a payé mais ses cours se sont refermés

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.

Je ne vois pas le volet « Mon abonnement »

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.

Un élève a payé mais ne voit pas son cours

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.

Un visiteur voit le prénom de quelqu'un d'autre

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ésinstaller l'extension

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.

Tous droits réservés - Tutoriel en Ligne  - SIRET:  49416273800020
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram