{"id":322279,"date":"2026-06-20T10:08:52","date_gmt":"2026-06-20T10:08:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/lector-book-library-epub-pdf-reader\/"},"modified":"2026-06-20T10:08:35","modified_gmt":"2026-06-20T10:08:35","slug":"jetreader","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/jetreader\/","author":15913242,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0","requires":"6.4","requires_php":"8.2","requires_plugins":null,"header_name":"JetReader \u2013 Book Library, EPUB & PDF Reader (Lite)","header_author":"Mehdi Turan","header_description":"Digital library plugin with modern reader experience. Supports EPUB, PDF, TXT, DOCX.","assets_banners_color":"9365c9","last_updated":"2026-06-20 10:08:35","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wplector.com","header_author_uri":"https:\/\/github.com\/mehdituran","rating":0,"author_block_rating":0,"active_installs":0,"downloads":26,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"mehdituran","date":"2026-06-20 10:08:35"}},"upgrade_notice":{"1.0.0":"<p>Initial stable release. Thank you for using JetReader!<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3579682,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3579682,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon-512x512.png":{"filename":"icon-512x512.png","revision":3579682,"resolution":"512x512","location":"assets","locale":"","width":512,"height":512}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3579682,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3579682,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3579682,"resolution":"1","location":"assets","locale":"","width":2698,"height":1560},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3579682,"resolution":"2","location":"assets","locale":"","width":3578,"height":1808},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3579682,"resolution":"3","location":"assets","locale":"","width":2130,"height":1788},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3579682,"resolution":"4","location":"assets","locale":"","width":3564,"height":1474},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3579682,"resolution":"5","location":"assets","locale":"","width":3176,"height":1802}},"screenshots":{"1":"Main Library View \u2014 The full interactive digital catalog supporting PDF, EPUB, DOCX, DOC, and TXT files with sidebar filters and grid layouts.","2":"In-Reader Experience \u2014 The seamless fullscreen reader open on a document, demonstrating custom layouts for EPUB\/DOCX books and optimized viewports for PDF documents.","3":"Universal Document Tools &amp; Annotations \u2014 Live text highlighting and annotation options across different document types, from classic TXT files to complex PDFs.","4":"Admin \u2014 Library Management \u2014 Centralized WordPress admin screen showcasing organized type filters, digital format indicators, and auto-generated cover thumbnails.","5":"Admin \u2014 Document Ingest &amp; Metadata \u2014 Form fields for file uploads (PDF, EPUB, DOCX, DOC, TXT) featuring explicit access controls and metadata handling."}},"plugin_section":[],"plugin_tags":[7629,7628,1980,1764,5218],"plugin_category":[50],"plugin_contributors":[268063],"plugin_business_model":[],"class_list":["post-322279","plugin","type-plugin","status-publish","hentry","plugin_tags-ebook","plugin_tags-epub","plugin_tags-library","plugin_tags-pdf","plugin_tags-reader","plugin_category-media","plugin_contributors-mehdituran","plugin_committers-mehdituran"],"banners":{"banner":"https:\/\/ps.w.org\/jetreader\/assets\/banner-772x250.png?rev=3579682","banner_2x":"https:\/\/ps.w.org\/jetreader\/assets\/banner-1544x500.png?rev=3579682","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/jetreader\/assets\/icon-128x128.png?rev=3579682","icon_2x":"https:\/\/ps.w.org\/jetreader\/assets\/icon-256x256.png?rev=3579682","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jetreader\/assets\/screenshot-1.png?rev=3579682","caption":"Main Library View \u2014 The full interactive digital catalog supporting PDF, EPUB, DOCX, DOC, and TXT files with sidebar filters and grid layouts."},{"src":"https:\/\/ps.w.org\/jetreader\/assets\/screenshot-2.png?rev=3579682","caption":"In-Reader Experience \u2014 The seamless fullscreen reader open on a document, demonstrating custom layouts for EPUB\/DOCX books and optimized viewports for PDF documents."},{"src":"https:\/\/ps.w.org\/jetreader\/assets\/screenshot-3.png?rev=3579682","caption":"Universal Document Tools &amp; Annotations \u2014 Live text highlighting and annotation options across different document types, from classic TXT files to complex PDFs."},{"src":"https:\/\/ps.w.org\/jetreader\/assets\/screenshot-4.png?rev=3579682","caption":"Admin \u2014 Library Management \u2014 Centralized WordPress admin screen showcasing organized type filters, digital format indicators, and auto-generated cover thumbnails."},{"src":"https:\/\/ps.w.org\/jetreader\/assets\/screenshot-5.png?rev=3579682","caption":"Admin \u2014 Document Ingest &amp; Metadata \u2014 Form fields for file uploads (PDF, EPUB, DOCX, DOC, TXT) featuring explicit access controls and metadata handling."}],"raw_content":"<!--section=description-->\n<p>JetReader turns WordPress into a digital library with a fullscreen React document reader. Upload, manage, and display books, articles, magazines, and Q&amp;A documents. It automatically maps documents to SEO-friendly Custom Post Types, making them fully searchable and XML sitemap compatible.<\/p>\n\n<h3>Document Support<\/h3>\n\n<ul>\n<li><strong>EPUB<\/strong> \u2014 Paginated layout, customizable fonts, and outline navigation.<\/li>\n<li><strong>PDF<\/strong> \u2014 High-performance rendering, zoom, and dual\/single page view.<\/li>\n<li><strong>TXT<\/strong> \u2014 Auto-styled text with font resizing and auto-scroll.<\/li>\n<li><strong>DOCX<\/strong> \u2014 Client-side parsing and rendering of Word files with formatting.<\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>Fullscreen View<\/strong> \u2014 Clean template without site headers\/footers for maximum focus.<\/li>\n<li><strong>Themes<\/strong> \u2014 Toggle between Light, Dark, Sepia, and Auto modes.<\/li>\n<li><strong>In-doc Search<\/strong> \u2014 Find terms directly inside the document with page-jump.<\/li>\n<li><strong>Resume Reading<\/strong> \u2014 Remembers the user's reading progress.<\/li>\n<li><strong>Deep Linking<\/strong> \u2014 Direct URLs (e.g., <code>#page=12<\/code>) to open at a specific page.<\/li>\n<\/ul>\n\n<h3>Documentation<\/h3>\n\n<p>For full documentation, shortcode attributes, and REST API endpoints, please visit the official documentation page:\nhttps:\/\/wplector.com<\/p>\n\n<h3>Source Code &amp; Build Instructions<\/h3>\n\n<p>This plugin contains minified\/compiled React assets under the <code>dist\/<\/code> directory. For build reproducibility and compilation transparency, the distributed package includes the complete, unminified, human-readable source code inside the <code>src\/<\/code> directory, as well as the build configuration files (<code>package.json<\/code>, <code>package-lock.json<\/code>, <code>vite.config.ts<\/code>, <code>tsconfig.json<\/code>, <code>postcss.config.js<\/code>, <code>tailwind.config.ts<\/code>). The source code is also publicly accessible and maintained in the following repository:\nhttps:\/\/github.com\/mehdituran\/jetreader-lite<\/p>\n\n<h3>Build Tools &amp; Steps<\/h3>\n\n<p>To build the compiled assets from the source code:\n1. Ensure Node.js (v18+) is installed.\n2. Clone the repository and navigate to the project directory.\n3. Install dependencies by running:\n       npm install\n4. Build the production assets using the Vite builder:\n       npm run build\n5. The generated compiled files will be output to the <code>dist\/<\/code> directory.<\/p>\n\n<h3>Third-Party Libraries<\/h3>\n\n<p>The compiled assets bundle the following third-party libraries:\n* <strong>React &amp; React DOM<\/strong> (MIT License) - https:\/\/react.dev\/\n* <strong>TanStack React Query<\/strong> (MIT License) - https:\/\/tanstack.com\/query\/\n* <strong>Framer Motion<\/strong> (MIT License) - https:\/\/www.framer.com\/motion\/\n* <strong>Epub.js<\/strong> (BSD 3-Clause License) - https:\/\/github.com\/futurepress\/epub.js\/\n* <strong>Mozilla PDF.js<\/strong> (Apache 2.0 License) - https:\/\/mozilla.github.io\/pdf.js\/\n* <strong>Mammoth.js<\/strong> (BSD 2-Clause License) - https:\/\/github.com\/mwilliamson\/mammoth.js (including Bluebird and JSZip)\n* <strong>DOMPurify<\/strong> (Apache 2.0 \/ LGPL 2.1) - https:\/\/github.com\/cure53\/DOMPurify\n* <strong>fflate<\/strong> (MIT License) - https:\/\/github.com\/101arrowz\/fflate\n* <strong>Keen Slider<\/strong> (MIT License) - https:\/\/keen-slider.io\/<\/p>\n\n<h3>Localization &amp; Translation<\/h3>\n\n<p>JetReader is fully translation-ready: PHP strings use WordPress i18n functions (<code>__()<\/code>, <code>_e()<\/code>, etc.) and the React admin\/frontend\/reader interfaces use <code>@wordpress\/i18n<\/code>, so the plugin follows your site's active language (including per-page languages set by Polylang\/WPML) automatically. The translation template is at <code>languages\/jetreader.pot<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>jetreader<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Upon activation, the plugin will automatically create custom database tables and register the default CPT rewrite rules.<\/li>\n<li>Go to <strong>JetReader \u2192 Settings<\/strong> to set your default language, reader options, library card layout, and color palettes.<\/li>\n<li>Create a new WordPress Page, insert the <code>[jetreader_library]<\/code> shortcode, and publish it.<\/li>\n<li>Add your first digital item via <strong>JetReader \u2192 Library Items \u2192 Add New<\/strong> or by uploading documents. Your library is now ready!<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20file%20formats%20are%20supported%3F\"><h3>Which file formats are supported?<\/h3><\/dt>\n<dd><p>JetReader supports EPUB, PDF, TXT, and DOCX files. Files can be uploaded directly or linked via external URLs.<\/p><\/dd>\n<dt id=\"can%20visitors%20bookmark%20or%20highlight%20without%20registering%3F\"><h3>Can visitors bookmark or highlight without registering?<\/h3><\/dt>\n<dd><p>No. Since bookmarks and annotations are saved in your database for a persistent cross-device experience, users must be logged into a WordPress account. Public reading does not require an account.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20text%20copying%3F\"><h3>Can I disable text copying?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>JetReader \u2192 Settings<\/strong> and toggle the \"Copy Enabled\" permission. This disables text selection, right-click, and copy hotkeys inside the reader interface.<\/p><\/dd>\n<dt id=\"how%20does%20search%20work%20in%20the%20lite%20version%3F\"><h3>How does search work in the Lite version?<\/h3><\/dt>\n<dd><p>JetReader allows visitors to search through uploaded documents in the library by their titles. For document-internal content search, the reader parses and searches document text directly in the visitor's browser (client-side), without requiring any server-side database indexing.<\/p><\/dd>\n<dt id=\"will%20jetreader%20slow%20down%20my%20wordpress%20site%3F\"><h3>Will JetReader slow down my WordPress site?<\/h3><\/dt>\n<dd><p>No. Frontend assets (JavaScript and CSS bundles) are enqueued dynamically and only load on pages where a JetReader shortcode is present.<\/p><\/dd>\n<dt id=\"is%20jetreader%20compatible%20with%20woocommerce%3F\"><h3>Is JetReader compatible with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. JetReader declares compatibility with WooCommerce High-Performance Order Storage (HPOS) so no admin compatibility warnings appear on WooCommerce stores.<\/p><\/dd>\n<dt id=\"what%20are%20tags%20used%20for%3F\"><h3>What are Tags used for?<\/h3><\/dt>\n<dd><p>Tags are a lightweight cross-type taxonomy. Unlike categories (which are content-type specific), a single tag can group books, articles, magazines, and Q&amp;A documents together. This enables flexible filtering and discovery across your entire library.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20screenshots%20to%20a%20wordpress.org%20plugin%20page%3F\"><h3>How do I add screenshots to a WordPress.org plugin page?<\/h3><\/dt>\n<dd><p>See the Screenshots section below for the required images and how to place them.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Localization: replaced the custom <code>lang\/*.json<\/code> + <code>t()<\/code> translation system with native WordPress i18n (<code>__()<\/code>, <code>_e()<\/code>, <code>sprintf()<\/code>) across PHP and the React admin\/frontend\/reader interfaces, so the plugin is now translatable through standard <code>.po<\/code>\/<code>.mo<\/code> files and works correctly with Polylang\/WPML.<\/li>\n<li>The plugin's text direction (RTL\/LTR) now follows WordPress's own <code>is_rtl()<\/code> instead of a custom per-language setting.<\/li>\n<li>Removed the unused \"Plugin Language\" backend setting and the <code>lang\/<\/code> directory; admin menu and CPT labels are now translated through core WordPress functions instead of a custom JSON lookup.<\/li>\n<li>Regenerated <code>languages\/jetreader.pot<\/code> to include all translatable strings from both PHP and the React\/TypeScript source.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Security: file rename endpoint now rejects any new file name that changes the file extension, preventing uploads from being renamed to executable file types.<\/li>\n<li>Fixed: critical reader page CSS is now registered through <code>wp_register_style()<\/code>\/<code>wp_add_inline_style()<\/code> instead of being printed as an inline <code>&lt;style&gt;<\/code> tag.<\/li>\n<li>Fixed: rate-limit transient keys now use the <code>jetreader_<\/code> prefix instead of the too-short <code>jr_<\/code> prefix to avoid collisions with other plugins.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Collapsible Filter Sidebar: added a collapsible Filter Sidebar on desktop layout.<\/li>\n<li>Modern Arrow Icons: integrated custom <code>&lt;<\/code> and <code>&gt;<\/code> toggle buttons for the sidebar.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Custom Q&amp;A layout: displayed as a clean, vertical list instead of standard grid cards.<\/li>\n<li>Detail modal: hid the left cover image column and adjusted width to 650px for Q&amp;A items.<\/li>\n<li>Multiple shortcodes: fixed ID conflicts to support displaying multiple library instances on a single page.<\/li>\n<li>Type parameter mapping: automatically resolves plural shortcode attributes (e.g. books, magazines) to singular ones.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial stable release of JetReader Lite.<\/li>\n<li>Added support for EPUB, PDF, TXT, and DOCX files.<\/li>\n<li>Added modern fullscreen React-based document reader interface.<\/li>\n<li>Added customizable reading themes (Light, Dark, Sepia, Auto) and font sizes.<\/li>\n<li>Added persistent user bookmarks, notes, and colored highlights.<\/li>\n<li>Added deep linking and resume reading features.<\/li>\n<li>Added SEO optimization, CPT sync, and Schema.org metadata injection.<\/li>\n<li>Added standalone document metadata search.<\/li>\n<\/ul>","raw_excerpt":"JetReader turns WordPress into a digital library with a fullscreen React document reader and advanced document management.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/322279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=322279"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mehdituran"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=322279"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=322279"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=322279"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=322279"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=322279"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=322279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}