=== Smart RTL Post === Contributors: luqmansafay Tags: rtl, right-to-left, arabic, urdu, pashto Requires at least: 5.0 Tested up to: 7.0 Stable tag: 1.5.1 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Apply RTL styling to selected posts, pages, and custom post types with Gutenberg support. == Description == Smart RTL Post allows you to easily apply RTL styling to selected posts, pages, and custom post types. = Features = * Enable RTL per post * Gutenberg editor support * Custom post types support * Lightweight plugin * Clean uninstall * No performance impact * Custom fonts support * Works on Posts and Pages (and any post type via filter hook) * Native Block Editor (Gutenberg) sidebar panel — no Classic Editor required * Settings page to choose default direction, font, font size, and line height * Shortcode `[rtl]your text[/rtl]` for inline RTL content inside any post * Google Fonts support: Noto Nastaliq Urdu, Scheherazade New, Amiri, Lateef * CSS only loaded when actually needed (performance friendly) * RTL styles scoped to content area only — navigation and header stay unaffected * Developer-friendly: `smart_rtl_supported_post_types` filter to add custom post types * Clean uninstall — removes all options and post meta when deleted = Shortcode Usage = Use inside any post or page: `[rtl]Your text here[/rtl]` = Add Custom Post Type Support = Add this to your theme's functions.php: `add_filter( 'smart_rtl_supported_post_types', function( $types ) { $types[] = 'product'; return $types; } );` ` == Installation == 1. Upload the `smart-rtl-post` folder to `/wp-content/plugins/` 2. Activate the plugin from the **Plugins** page in WordPress 3. Go to **Settings > Smart RTL Post** to configure defaults 4. Edit any post or page and select the direction from the sidebar == Frequently Asked Questions == = Does this work with the Block Editor (Gutenberg)? = Yes. A native sidebar panel appears in the Document Settings for both Classic Editor and Block Editor. = Can I use it on WooCommerce product pages? = Not by default, but you can easily add any custom post type using the `smart_rtl_supported_post_types` filter (see Description). = Will this slow down my site? = No. The CSS file is only loaded on pages where RTL direction is actually enabled. = Which fonts are available? = Noto Nastaliq Urdu, Scheherazade New, Amiri, Lateef, and a System Serif (no Google Fonts) option. = Does changing direction break my site navigation? = No. Since v1.3.0 the RTL direction is scoped to post content areas only. Your header, navigation menus, and footer are not affected. = What happens when I delete the plugin? = All options and post meta are automatically removed from the database. == Screenshots == 1. Block Editor sidebar panel showing LTR / RTL options. 2. Classic Editor meta box showing LTR / RTL options. 3. Settings page with font, font size, and line-height options. == Changelog == = 1.5.1 = * Fixed: CSS inline values (font_size, line_height) explicitly re-sanitized before injection — absint() and range clamp added * Fixed: WordPress.org submission zip now uses correct folder name 'smart-rtl-post' (no version suffix) * Confirmed: WP_UNINSTALL_PLUGIN check present in uninstall.php * Confirmed: Plugin slug, Text Domain, and load_plugin_textdomain are all 'smart-rtl-post' — consistent * Confirmed: No raw variable outputs — all echo uses esc_html/esc_attr/esc_url/wp_kses_post = 1.5.0 = * Added: register_activation_hook — sets default options on clean install using add_option() with autoload=no * Added: autoload=false on all register_setting() calls (WP 6.0+) — prevents options loading on every page, improves performance * Added: readme.txt tags now include 'direction' and 'gutenberg' for better WordPress.org search visibility * Confirmed: WP_UNINSTALL_PLUGIN security check already present in uninstall.php * Confirmed: CSS loads conditionally — only on RTL posts or when [rtl] shortcode detected = 1.4.2 = * Fixed: transition_post_status condition tightened — now only fires when status changes exactly TO publish FROM non-publish (avoids publish→draft, publish→trash edge cases) * Fixed: Multisite uninstall now uses batch processing (100 sites per loop) — prevents server hang on large networks * Fixed: Added wp-block-code to CSS RTL selectors * Fixed: Version bumped in rtl-style.css, block-editor.js, and SMART_RTL_VERSION constant — all in sync * Fixed: .pot file updated to version 1.4.2; all 20 strings verified with correct text-domain * Fixed: readme.txt Stable tag matches plugin Version header — WordPress.org consistency = 1.4.1 = * Fixed: Version comments in rtl-style.css and block-editor.js updated to 1.4.1 * Fixed: wp_insert_post replaced with transition_post_status hook — default direction now only saves on actual publish/schedule, not on every draft save * Fixed: Multisite support added to uninstall.php — all sub-sites cleaned up on network delete * Fixed: Added missing Gutenberg block selectors: wp-block-table, wp-block-group, wp-block-columns, wp-block-column, wp-block-cover, wp-block-media-text * Added: languages/smart-rtl-post.pot translation template file for Urdu/Pashto/Arabic translators = 1.4.0 = * Fixed: Default direction now saved to database on first publish (was only shown in UI before) * Fixed: Gutenberg detection now uses reliable use_block_editor_for_post_type() instead of get_current_screen() * Fixed: line-height setting was registered but never actually applied — now works correctly * Fixed: Shortcode CSS now loads even in LTR posts (has_shortcode() detection added) * Fixed: Google Fonts now properly enqueued via wp_enqueue_style (font was named but never loaded) * Fixed: Shortcode [rtl] inline styles replaced with CSS class for better SEO and performance * Fixed: .smart-rtl-inline now inherits font-family, font-size, line-height from settings = 1.3.1 = * Improved `get_current_screen()` safety check to prevent rare admin errors * Improved `auth_callback` to use post-specific `edit_post` capability (WordPress review standard) * Added `wp_style_is()` check before `wp_add_inline_style()` for safer CSS injection * Added explicit `load_plugin_textdomain()` for non-WordPress.org distributions * Added Settings link in Plugins list page for easier access = 1.3.0 = * Added native Block Editor (Gutenberg) sidebar panel via `PluginDocumentSettingPanel` * Added Font Size setting (14 – 32px, default 18px) — useful for Urdu/Pashto readability * Fixed shortcode: now uses saved font setting instead of hardcoded font families * Fixed CSS scope: RTL direction no longer applied to full body (navigation/header unaffected) * Added `uninstall.php` — cleans up all options and post meta on plugin deletion = 1.2.0 = * Added support for Pages (not just Posts) * Added Settings page (default direction, font chooser, line height) * Added `[rtl]...[/rtl]` shortcode for inline RTL text * CSS now loads conditionally — only on RTL pages * Google Fonts support (Noto Nastaliq Urdu, Scheherazade New, Amiri, Lateef) * Improved CSS to target common block editor content wrappers * Added `smart_rtl_supported_post_types` filter for developers * Added `Requires PHP: 7.4` header = 1.0.0 = * Initial release. == License == This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 or later. For more details, visit: https://www.gnu.org/licenses/gpl-2.0.html