{"id":318802,"date":"2026-05-31T20:07:47","date_gmt":"2026-05-31T20:07:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/fictbase\/"},"modified":"2026-05-31T20:07:13","modified_gmt":"2026-05-31T20:07:13","slug":"fictbase","status":"publish","type":"plugin","link":"https:\/\/ca.wordpress.org\/plugins\/fictbase\/","author":23506608,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.4","stable_tag":"2.2.4","tested":"7.0","requires":"6.3","requires_php":"8.0","requires_plugins":null,"header_name":"FICTBASE","header_author":"FICTBASE","header_description":"Publish serialized fiction on WordPress. Own your audience.","assets_banners_color":"","last_updated":"2026-05-31 20:07:13","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/fictbase.com\/docs","header_author_uri":"https:\/\/fictbase.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":47,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.2.4":{"tag":"2.2.4","author":"fictbase09","date":"2026-05-31 20:07:13"}},"upgrade_notice":{"2.2.0":"<p>Security release. Updates license storage to use HMAC signatures to prevent database tampering. Recommended for all users.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.2.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Story management dashboard \u2014 create and manage all your stories in one place","2":"Chapter editor \u2014 rich-text editor with word count, read time, and Pro publish controls","3":"Story landing page \u2014 chapter list, genre\/status badges, and subscriber follow form","4":"Stories archive \u2014 public grid at \/stories\/ with genre and status filters","5":"Custom CSS editor (Pro) \u2014 scoped CSS for story listing, story page, and chapter reader"}},"plugin_section":[],"plugin_tags":[17041,125393,10817,265247,1811],"plugin_category":[46],"plugin_contributors":[265248],"plugin_business_model":[],"class_list":["post-318802","plugin","type-plugin","status-publish","hentry","plugin_tags-chapters","plugin_tags-fiction","plugin_tags-stories","plugin_tags-web-novel","plugin_tags-writing","plugin_category-editor-and-writing","plugin_contributors-fictbase09","plugin_committers-fictbase09"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/fictbase.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>FICTBASE turns any WordPress site into a self-hosted serialized fiction platform \u2014 a free Wattpad alternative and Royal Road alternative that runs on infrastructure you control.<\/p>\n\n<p>Publish your web novel or serialized story chapter by chapter. Own your readers. Keep 100% of your revenue. No platform fees, no algorithm changes, no lock-in.<\/p>\n\n<h4>Why Self-Host Your Fiction?<\/h4>\n\n<p>Platforms like Wattpad and Royal Road give you discovery, then take everything else. When you self-host with FICTBASE:<\/p>\n\n<ul>\n<li><strong>You own your audience<\/strong> \u2014 collect email subscribers directly on your story pages<\/li>\n<li><strong>You own the SEO<\/strong> \u2014 Google ranks <em>your<\/em> domain, not the platform's<\/li>\n<li><strong>You control monetization<\/strong> \u2014 Patreon, subscriptions, ads, or anything else<\/li>\n<li><strong>You set the rules<\/strong> \u2014 no content policy changes, no sudden demonetization<\/li>\n<\/ul>\n\n<h4>Free Features<\/h4>\n\n<p><strong>Stories and Chapters<\/strong><\/p>\n\n<ul>\n<li>Create and manage stories with title, cover image, description, genre, and status<\/li>\n<li>Add chapters with a full rich-text editor<\/li>\n<li>Automatic word count and estimated read time per chapter<\/li>\n<li>Chapter reading page with scroll-based progress bar<\/li>\n<li>Previous \/ Next chapter navigation<\/li>\n<li>Author bio block at the end of each chapter<\/li>\n<li>Clean URLs: <code>\/story\/my-story\/<\/code>, <code>\/story\/my-story\/chapter\/1\/<\/code><\/li>\n<\/ul>\n\n<p><strong>Reader Experience<\/strong><\/p>\n\n<ul>\n<li>Light, Dark, and Auto (follows OS) reader themes<\/li>\n<li>Adjustable font size and reading width<\/li>\n<li>Story archive at <code>\/stories\/<\/code> with genre and status filters<\/li>\n<\/ul>\n\n<p><strong>Developer and Site Tools<\/strong><\/p>\n\n<ul>\n<li>Shortcodes: <code>[fictbase_list]<\/code>, <code>[fictbase_story id=\"5\"]<\/code>, <code>[fictbase_chapters story_id=\"5\"]<\/code><\/li>\n<li>REST API: GET stories, GET chapters, POST view tracking<\/li>\n<li>Works with any WordPress theme \u2014 injects CSS only on fiction pages<\/li>\n<\/ul>\n\n<h4>Pro Features<\/h4>\n\n<p>Pro is an optional paid upgrade available at <a href=\"https:\/\/fictbase.com\">fictbase.com<\/a>. The free plugin is fully functional without it.<\/p>\n\n<ul>\n<li><strong>Drip scheduling<\/strong> \u2014 write chapters in advance and release them on an automatic schedule<\/li>\n<li><strong>Reader bookmarks<\/strong> \u2014 logged-in users save their exact reading position across devices<\/li>\n<li><strong>Analytics dashboard<\/strong> \u2014 total chapter views, 30-day chart, top chapters by reads<\/li>\n<li><strong>Email notifications<\/strong> \u2014 subscribers receive an email the moment a new chapter publishes<\/li>\n<li><strong>.docx import<\/strong> \u2014 bulk-import a Word manuscript; chapters detected automatically from headings<\/li>\n<li><strong>Custom CSS editor<\/strong> \u2014 per-page scoped CSS for story listing, story landing page, and chapter reader<\/li>\n<\/ul>\n\n<h4>The Self-Hosted Web Novel Platform<\/h4>\n\n<p>FICTBASE is built specifically for serialized fiction authors who want the features of Wattpad or Royal Road without giving up ownership of their work. Whether you write fantasy, romance, LitRPG, progression fantasy, sci-fi, or any other genre \u2014 if it's chapter-based and ongoing, FICTBASE is built for it.<\/p>\n\n<h4>External Services<\/h4>\n\n<p>This plugin makes no external HTTP requests of any kind. No data is transmitted to any third-party service. All data (stories, chapters, settings) is stored in your own WordPress database.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>fictbase<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress<\/li>\n<li>Go to <strong>FICTBASE \u2192 Stories<\/strong> to create your first story<\/li>\n<li>Add chapters via <strong>FICTBASE \u2192 Stories \u2192 Chapters<\/strong><\/li>\n<li>Your story is live at <code>\/story\/your-story-slug\/<\/code><\/li>\n<\/ol>\n\n<p>No pages need to be created manually. FICTBASE registers its own URL routes on activation.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20a%20wattpad%20alternative%3F\"><h3>Is this a Wattpad alternative?<\/h3><\/dt>\n<dd><p>Yes. FICTBASE gives you the same chapter-by-chapter reading experience as Wattpad \u2014 story pages, chapter navigation, genre filters, reader themes \u2014 but hosted on your own WordPress site. You keep your audience data, your SEO, and 100% of your revenue.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20for%20web%20novels%3F\"><h3>Can I use this for web novels?<\/h3><\/dt>\n<dd><p>Yes. FICTBASE is designed for web novels and serialized fiction of any genre: fantasy, LitRPG, romance, progression fantasy, sci-fi, thriller, and more. Each story gets its own landing page and chapter list, and readers can filter by genre on the public archive at <code>\/stories\/<\/code>.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20create%20any%20wordpress%20pages%3F\"><h3>Do I need to create any WordPress pages?<\/h3><\/dt>\n<dd><p>No. FICTBASE uses its own URL routing. Stories and chapters are available at <code>\/story\/{slug}\/<\/code> automatically after plugin activation. If your URLs return 404, go to Settings \u2192 Permalinks and click Save.<\/p><\/dd>\n<dt id=\"where%20do%20i%20put%20the%20shortcodes%3F\"><h3>Where do I put the shortcodes?<\/h3><\/dt>\n<dd><p>Use <code>[fictbase_list]<\/code> on any page to show all your stories in a grid. Use <code>[fictbase_story id=\"5\"]<\/code> to embed a single story card. Use <code>[fictbase_chapters story_id=\"5\"]<\/code> to embed a chapter list.<\/p><\/dd>\n<dt id=\"what%20is%20the%20pro%20version%3F\"><h3>What is the Pro version?<\/h3><\/dt>\n<dd><p>Pro is an optional paid add-on (from $9.99\/month or $99\/year) that unlocks drip scheduling, reader bookmarks, analytics, email notifications, .docx import, and a per-page Custom CSS editor. It is purchased at fictbase.com. The free plugin is fully functional without it.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20any%20theme%3F\"><h3>Does this work with any theme?<\/h3><\/dt>\n<dd><p>Yes. FICTBASE injects its own CSS only on story and chapter pages. Your existing theme header and footer continue to wrap reader pages.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20the%20look%20of%20chapter%20pages%3F\"><h3>How do I change the look of chapter pages?<\/h3><\/dt>\n<dd><p>Go to <strong>FICTBASE \u2192 Settings<\/strong>. You can choose light\/dark\/auto theme, font size, reading width, and add custom CSS. For deeper changes, copy the template files from the plugin's <code>public\/views\/<\/code> folder into a <code>fictbase\/<\/code> subfolder in your theme.<\/p><\/dd>\n<dt id=\"is%20this%20gdpr-friendly%3F\"><h3>Is this GDPR-friendly?<\/h3><\/dt>\n<dd><p>The free plugin stores no visitor data. Pro's email subscriber feature stores email addresses in your own WordPress database. No data is sent to third parties except for licence key validation (see \"External Services\" above).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.4<\/h4>\n\n<ul>\n<li>Fix: remove license key input and external API call from free plugin; Pro page now links to fictbase.com with manual install instructions (WP.org Guideline 6)<\/li>\n<li>Fix: remove <code>assets\/<\/code> folder (banners, icons, screenshots) from plugin zip \u2014 these are uploaded to SVN assets\/ separately after approval<\/li>\n<\/ul>\n\n<h4>2.2.3<\/h4>\n\n<ul>\n<li>Fix: move all inline <code>&lt;style&gt;<\/code> and <code>&lt;script&gt;<\/code> blocks to <code>wp_enqueue_style<\/code> \/ <code>wp_add_inline_style<\/code> \/ <code>wp_add_inline_script<\/code> per WP.org guidelines<\/li>\n<li>Fix: change story\/chapter management capability from <code>manage_options<\/code> to <code>edit_posts<\/code>; authors may only edit their own stories<\/li>\n<li>Fix: remove <code>Plugin_Upgrader<\/code> auto-install and <code>activate_plugin<\/code> from free plugin to comply with WP.org guideline 8<\/li>\n<li>Fix: remove custom CSS setting from free plugin (use WP Customizer for site-wide CSS)<\/li>\n<li>Fix: REST <code>track_view<\/code> endpoint now rejects unpublished chapters<\/li>\n<li>Fix: admin menu position moved to 58 (below all core WP items)<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Improvement: update plugin description and tags for clarity<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Fix: add missing translators comments to all plural\/placeholder i18n strings<\/li>\n<li>Fix: wrap all printf() integer arguments with absint() to satisfy output escaping requirements<\/li>\n<li>Fix: use %i placeholder for table name in SQL query to avoid string interpolation<\/li>\n<li>Fix: escape emoji icon output with esc_html() in story and status grids<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Security: HMAC-sign license data stored in the database to detect direct tampering<\/li>\n<li>Security: remove development bypass \u2014 FICTBASE_API_URL must be configured for license checks<\/li>\n<li>Fix: PHP 8 compatibility for WP REST API <code>validate_callback<\/code> (ArgumentCountError on PHP 8 when using native function strings)<\/li>\n<li>Fix: Pro gate enforced on all bookmark REST endpoints<\/li>\n<li>Fix: IDOR validation added to bookmark save endpoint (chapter must belong to the requested story)<\/li>\n<li>Fix: story delete now uses <code>$wpdb-&gt;prepare()<\/code> with placeholders for chapter_views cleanup<\/li>\n<li>Fix: wrap <code>fb_stories_filter_url()<\/code> in <code>function_exists<\/code> to prevent fatal on pages with multiple shortcodes<\/li>\n<li>Improvement: license grace period (72h offline) now also verifies HMAC of cached data<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Add reader bookmarks (Pro) \u2014 save and resume reading position<\/li>\n<li>Add <code>.docx<\/code> import (Pro) \u2014 bulk-import manuscripts, chapters detected from headings<\/li>\n<li>Add story archive page at <code>\/stories\/<\/code> with genre and status filters<\/li>\n<li>Add <code>[fictbase_chapters]<\/code> shortcode<\/li>\n<li>REST API: add bookmark endpoints (POST, GET, DELETE)<\/li>\n<li>Improvement: chapter reading page now tracks scroll position for bookmark auto-save<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Add drip scheduling (Pro) \u2014 release chapters on a date\/time schedule<\/li>\n<li>Add analytics dashboard (Pro) \u2014 total views, 30-day chart, top chapters<\/li>\n<li>Add email notifications (Pro) \u2014 subscriber opt-in form on story pages; new chapter sends email<\/li>\n<li>Add licence key field and FICTBASE API validation<\/li>\n<li>Add 72-hour offline grace period for licence checks<\/li>\n<li>Add custom CSS field in plugin settings<\/li>\n<li>REST API: add <code>\/chapters\/{id}\/view<\/code> endpoint for view tracking<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Add light\/dark\/auto reader themes<\/li>\n<li>Add adjustable font size and reading width settings<\/li>\n<li>Add author bio block at end of chapter pages<\/li>\n<li>Add <code>[fictbase_story id=\"\"]<\/code> shortcode for embedding story cards<\/li>\n<li>Add uninstall.php to clean up database tables and options on uninstall<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Story and chapter CRUD in WP admin<\/li>\n<li>Chapter reading page with scroll-based progress bar<\/li>\n<li>Previous \/ Next chapter navigation<\/li>\n<li>Clean URLs: <code>\/story\/{slug}\/<\/code>, <code>\/story\/{slug}\/chapter\/{n}\/<\/code><\/li>\n<li>REST API: GET stories, GET story chapters, GET chapter<\/li>\n<li>Shortcode: <code>[fictbase_list]<\/code><\/li>\n<li>Plugin settings: font size, reading width, theme<\/li>\n<\/ul>","raw_excerpt":"Serialized fiction and web novel plugin for WordPress. Chapters, drip scheduling, reader bookmarks \u2014 self-hosted, no platform lock-in.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/318802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=318802"}],"author":[{"embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/fictbase09"}],"wp:attachment":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=318802"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=318802"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=318802"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=318802"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=318802"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=318802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}