| 开发者 | frak68 |
|---|---|
| 更新时间 | 2026年9月6日 21:01 |
| PHP版本: | 8.1 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
admin-src/) is publicly available at: github.com/Francesco1968a/wsmaker — to rebuild a bundle: cd admin-src && npm install && WS_BUNDLE=<bundle-name> npx vite build (bundle names match the assets/dist/*.js filenames).
Developed by Francesco Verolino
Whether you run photography workshops, masterclasses, business seminars, art retreats, or online training, WSMaker provides the frictionless workflow to manage every aspect of your events.
🌟 Key Features
wsmaker folder to the /wp-content/plugins/ directory, or install the ZIP file via Plugins > Add New > Upload Plugin.No! While it was battle-tested by photographers, WSMaker is completely versatile and works for any type of course, masterclass, seminar, retreat, coaching program, or event.
WSMaker includes its own attendee intake engine and CRM. However, it also integrates seamlessly with Fluent Forms and WordPress native shortcodes.
The poster builder operates entirely client-side using the HTML5 Canvas API. It renders high-resolution graphics directly in your browser with zero server CPU overhead and exports crystal-clear PNG files.
msgstr identical to the English msgid), so they silently stayed in English even with the Italian locale active.workshop-suite folder name, Italian menu labels, non-clickable bare URLs).[eventi_categoria]→[wsma_eventi_categoria], [workshop_prossimo]→[wsma_workshop_prossimo]), a transient cache key, an admin menu slug, and the Webhooks module's form/nonce action names — all now under the wsma_/wsma- namespace, no leftover ws_/ws- prefixes.[ws_acquista] connector output) to wp_kses_post().ws/wv) prefixed global identifiers to the wsma/WSMA namespace: custom post types (ws_evento→wsma_evento, ws_partecipante→wsma_partecipante, ws_iscrizione→wsma_iscrizione), taxonomy (categoria_evento→wsma_categoria_evento), the license option/settings group, the Hub Sync legacy-backfill flag, and two internal options. A one-time migration on upgrade moves existing data to the new post type/taxonomy names automatically — no re-entry needed.[ws_form_iscrizione], [ws_acquista], [ws_prezzo], [ws_acconto], [ws_proponente], [ws_workshop_page], [ws_aula_virtuale], [ws_workshop_text]) now have wsma_-prefixed primary equivalents; the original tags remain registered as permanent aliases so pages built before this update keep working unchanged.[ws_form_iscrizione] silently failing to submit whenever a page embeds more than one instance of the form (e.g. one inline plus one per date inside a "Request info" modal). The frontend script relied on getElementById() against a non-unique ID, so only the first instance on the page ever got its submit handler attached — every other instance fell back to a native browser form submission (page reload, no data sent, no error shown). Now every instance is wired up independently via its shared CSS classes.wsmaker, updated branding throughout.WS_/ws_ prefix to WSM_/wsm_ for a properly unique namespace (no functional change; a corresponding update ships in the PRO add-on to keep both in sync).date()/parse_url() calls to their WordPress-safe equivalents (current_time(), wp_date(), wp_parse_url()) for correct timezone handling across installs.error_log() calls behind WP_DEBUG.evento → ws_evento post type rename (stale hook name).[ws_prezzo]/[ws_acconto] shortcodes.[workshop_categorie] shortcode for a dedicated frontend Categorie/Tipologia panel, alongside the existing [workshop_admin] (Eventi/Partecipanti).