{"id":311542,"date":"2026-05-19T03:33:35","date_gmt":"2026-05-19T03:33:35","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/effortless-floating-social-network\/"},"modified":"2026-05-19T03:31:20","modified_gmt":"2026-05-19T03:31:20","slug":"effortless-floating-social-network","status":"publish","type":"plugin","link":"https:\/\/tr.wordpress.org\/plugins\/effortless-floating-social-network\/","author":23148025,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.18","stable_tag":"1.0.18","tested":"6.9.4","requires":"6.9","requires_php":"8.0","requires_plugins":null,"header_name":"EffortLess Floating Social Network","header_author":"domclic","header_description":"Displays a customizable floating social icons widget with position and icon settings.","assets_banners_color":"","last_updated":"2026-05-19 03:31:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/domclic.com\/wordpress\/plugins\/effortless-floating-social-network","header_author_uri":"https:\/\/domclic.com\/wordpress\/authors\/daviddeflache","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.18":{"tag":"1.0.18","author":"domclic","date":"2026-05-19 03:31:20"}},"upgrade_notice":{"1.0.18":"<p>Code-quality pass: moves CSS to enqueue system, fixes empty container output, cleans up dead code and JS duplication, paginates uninstall cleanup.<\/p>","1.0.17":"<p>Removes discouraged <code>load_plugin_textdomain()<\/code>, adds translators comment, and fixes global variable prefixing in uninstall.php.<\/p>","1.0.16":"<p>Fixes a PHP parse error introduced in 1.0.15 that prevented the plugin from loading.<\/p>","1.0.15":"<p>Security and code-quality fixes. Recommended update for all users.<\/p>","1.0.12":"<p>Update for dynamic auto-saving, more social networks, and a fixed icon preview.<\/p>","1.0.11":"<p>Update for improved admin UI with live icon previews and Dashicons font icon support on the frontend.<\/p>","1.0.10":"<p>Update to use the media library for icon images and to embed social icons inline with the new shortcode.<\/p>","1.0.9":"<p>Update to benefit from improved code structure and full WordPress Coding Standards compliance.<\/p>","1.0.8":"<p>Update to benefit from automatic translation loading and ensure compliance with WordPress URI standards.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.18"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Social Icons Settings page.","2":"Example of floating icons on the frontend."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2759,20986,154,162],"plugin_category":[43],"plugin_contributors":[241557],"plugin_business_model":[],"class_list":["post-311542","plugin","type-plugin","status-publish","hentry","plugin_tags-customization","plugin_tags-floating-icons","plugin_tags-social-media","plugin_tags-widget","plugin_category-customization","plugin_contributors-domclic","plugin_committers-domclic"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/effortless-floating-social-network.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>The EffortLess Floating Social Network plugin allows you to add a customizable floating social icons widget to your WordPress site. Easily configure the position, icons, URLs, and background styles through the admin settings. This plugin is designed for WordPress 6.9+ and PHP 8.0+, ensuring compatibility with modern WordPress environments.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Customizable icon positions (left or right, X and Y coordinates).<\/li>\n<li>Support for default and custom icons.<\/li>\n<li>Background options (white or transparent).<\/li>\n<li>Easy management of social links via the WordPress admin.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>effortless-floating-social-network<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Go to Settings &gt; Social Icons to configure your social links and positions.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20add%20a%20custom%20icon%3F\"><h3>How do I add a custom icon?<\/h3><\/dt>\n<dd><p>Go to the Social Icons settings, select \"Custom (Media Library)\" for an icon, and upload or input a URL.<\/p><\/dd>\n<dt id=\"why%20aren%27t%20my%20icons%20showing%3F\"><h3>Why aren't my icons showing?<\/h3><\/dt>\n<dd><p>Ensure the <code>assets\/images\/<\/code> directory contains the default icon files (e.g., <code>facebook-icon.png<\/code>, <code>twitter-icon.png<\/code>) or verify your custom icon URLs.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20support%20translations%3F\"><h3>Does this plugin support translations?<\/h3><\/dt>\n<dd><p>Yes, translations are automatically handled by WordPress for plugins hosted on WordPress.org.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.18<\/h4>\n\n<ul>\n<li>Removed dead <code>$text_domain<\/code> property (never used; text domain is passed inline to every i18n call).<\/li>\n<li>Moved frontend CSS to <code>wp_add_inline_style()<\/code> in <code>elfsn_enqueue_frontend_assets()<\/code> so styles are output in <code>&lt;head&gt;<\/code> via the enqueue system; removed the duplicated inline <code>&lt;style&gt;<\/code> block and the now-unnecessary <code>$frontend_styles_printed<\/code> guard.<\/li>\n<li>Fixed empty container: both the floating widget and the shortcode now bail before rendering the wrapper <code>&lt;div&gt;<\/code> when no link has a usable URL and icon.<\/li>\n<li>Translated the previously hard-coded <code>'Unauthorized'<\/code> error message.<\/li>\n<li>Fixed variable alignment in <code>elfsn_ajax_push_to_network()<\/code>.<\/li>\n<li>Push button HTML is now captured on page load and restored on AJAX success\/failure instead of being duplicated as a hard-coded string in JS.<\/li>\n<li><code>uninstall.php<\/code> now paginates <code>get_sites()<\/code> in batches of 100 instead of loading all sites at once.<\/li>\n<li>Updated FAQ to reflect that <code>load_plugin_textdomain()<\/code> is no longer called.<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li>Removed discouraged <code>load_plugin_textdomain()<\/code> call; WordPress.org handles translations automatically since WP 4.6.<\/li>\n<li>Added missing <code>translators:<\/code> comment above <code>esc_html__()<\/code> call containing a <code>%d<\/code> placeholder.<\/li>\n<li>Prefixed global variables <code>$sites<\/code> and <code>$site<\/code> in <code>uninstall.php<\/code> to <code>$elfsn_sites<\/code> \/ <code>$elfsn_site<\/code> per plugin naming conventions.<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li>Fixed PHP parse error in elfsn_render_social_icons and elfsn_render_shortcode: removed invalid PHP open\/close tags inside class methods; both methods now use pure PHP echo\/foreach throughout.<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>Fixed all issues found in code review: missing return after permission check, CSS injection via position values, XSS sink in buildSocialLinkRow, icon field not allowlisted, push handler now re-sanitizes before replicating, sanitize_position now guards against non-array input.<\/li>\n<li>Multisite push now paginates get_sites() in batches of 100 instead of loading all sites at once.<\/li>\n<li>file_exists() in icon resolution is now memoized per request to avoid repeated filesystem stats.<\/li>\n<li>Shared frontend CSS is now printed only once even when both the floating widget and shortcode are on the same page.<\/li>\n<li>Added uninstall.php to clean up all plugin options on deletion.<\/li>\n<li>Version constant ELFSN_VERSION defined in bootstrap; asset enqueue version updated to match.<\/li>\n<li>Removed emoji from translatable string in Remove row button.<\/li>\n<li>Fixed readme: Requires at least, Tested up to, and description now all consistently reference WordPress 6.9.<\/li>\n<li>Restored load_plugin_textdomain() for non-WordPress.org deployments.<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Added multisite support: super admins can push current site's social icons settings to all other sites in the network with one click.<\/li>\n<li>Tested up to WordPress 6.9.<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Fixed Facebook icon: use <code>dashicons-facebook-alt<\/code> (solid variant).<\/li>\n<li>Fixed X (Twitter) icon: use <code>dashicons-x-twitter<\/code> (WP 6.1+ rebrand).<\/li>\n<li>Removed GitHub from Dashicons map (no glyph exists); GitHub rows show an empty preview until a custom image is uploaded.<\/li>\n<li>Default background changed from white to transparent.<\/li>\n<li>Settings row fields are now top-aligned (align-items: flex-start).<\/li>\n<li>Background field replaced with a CSS toggle switch (off = transparent, on = white).<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Fixed icon preview flickering: PHP now renders the initial state; JS only updates on user interaction.<\/li>\n<li>Added more social networks with Dashicons support: WhatsApp, GitHub, Reddit, Spotify, Twitch, X (Twitter).<\/li>\n<li>Removed \"Save Changes\" button; settings now auto-save via AJAX with debounce and a \"Saved\" status indicator.<\/li>\n<li>Added AJAX endpoint <code>elfsn_save_settings<\/code> for secure dynamic saving with nonce verification.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Redesigned settings UI: icon rows now display in a compact horizontal card layout with a live icon preview (Dashicon or custom image thumbnail).<\/li>\n<li>Raw custom icon URL input replaced by a hidden field; user interacts only with the media picker and a \"Remove\" button.<\/li>\n<li>Added Dashicons as font icon fallback on the frontend when no custom image is set.<\/li>\n<li>Frontend rendering now uses <code>&lt;span class=\"dashicons\"&gt;<\/code> for font icons and background-image for custom images.<\/li>\n<li>Dashicons enqueued on the frontend via <code>wp_enqueue_style( 'dashicons' )<\/code>.<\/li>\n<li>Bumped version number.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Added always-visible media library picker for each social link icon; custom icon overrides the default icon file if set.<\/li>\n<li>Added <code>[elfsn_social_icons]<\/code> shortcode to render social icons horizontally inline in any page or post.<\/li>\n<li>Extracted icon URL resolution into a shared private method to avoid duplication between the floating widget and the shortcode.<\/li>\n<li>Bumped version number.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Refactored plugin class into <code>includes\/class-elfsn-social-icons-floating.php<\/code> to follow WordPress file naming conventions.<\/li>\n<li>Fixed all WordPress Coding Standards (phpcs) violations: added PHPDoc blocks, strict <code>in_array()<\/code> comparisons, Yoda conditions, and inline comment punctuation.<\/li>\n<li>Bumped version number.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Removed <code>load_plugin_textdomain()<\/code> as it\u2019s handled automatically by WordPress.org.<\/li>\n<li>Updated Plugin URI and Author URI to valid domains.<\/li>\n<li>Bumped version number.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Initial release with basic functionality.<\/li>\n<\/ul>","raw_excerpt":"Displays a customizable floating social icons widget with position and icon settings.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/311542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=311542"}],"author":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/domclic"}],"wp:attachment":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=311542"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=311542"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=311542"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=311542"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=311542"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=311542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}