{"id":337860,"date":"2026-07-12T23:08:17","date_gmt":"2026-07-12T23:08:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/teenybar\/"},"modified":"2026-07-12T23:07:51","modified_gmt":"2026-07-12T23:07:51","slug":"teenybar","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/teenybar\/","author":23488465,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.4","stable_tag":"0.4.4","tested":"7.0.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"TeenyBar","header_author":"Neutrope Inc.","header_description":"\u30ed\u30b0\u30a4\u30f3\u4e2d\u306e\u30d5\u30ed\u30f3\u30c8\u753b\u9762\u3067 Admin Bar \u3092\u521d\u671f\u975e\u8868\u793a\u306b\u3057\u3001\u8a2d\u5b9a\u3057\u305f\u30db\u30c3\u30c8\u30be\u30fc\u30f3\uff08\u5de6\u4e0a\u89d2\uff0f\u4e0a\u7aef\uff0f\u53f3\u4e0a\u89d2\uff09\u306b\u30de\u30a6\u30b9\u3092\u8fd1\u3065\u3051\u305f\u3068\u304d\u3060\u3051 Admin Bar \u3092\u8868\u793a\u3057\u307e\u3059\u3002\u8868\u793a\u6642\u306e\u307f Admin Bar \u306e\u9ad8\u3055\u5206\u30da\u30fc\u30b8\u3092\u62bc\u3057\u4e0b\u3052\u3001\u975e\u8868\u793a\u6642\u306f\u4e0a\u4f59\u767d\u30bc\u30ed\u3092\u7dad\u6301\u3057\u307e\u3059\u3002\u4efb\u610f\u3067\u56fa\u5b9a\u30d8\u30c3\u30c0\u30fc\u4e92\u63db\u30e2\u30fc\u30c9\u3001\u8868\u793a\uff0f\u975e\u8868\u793a\u30c7\u30a3\u30ec\u30a4\u8a2d\u5b9a\u3042\u308a\u3002WordPress\u6a19\u6e96\u306eadmin-bar bump\u306f\u30d5\u30ed\u30f3\u30c8\u3067\u7121\u52b9\u5316\u3057\u307e\u3059\u3002","assets_banners_color":"f8f9fb","last_updated":"2026-07-12 23:07:51","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/neutrope.biz\/teenybar\/","header_author_uri":"https:\/\/neutrope.biz\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":46,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.4.4":{"tag":"0.4.4","author":"neutropeinc","date":"2026-07-12 23:07:51"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3605309,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3605309,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3605309,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3605309,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.4.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3605309,"resolution":"1","location":"assets","locale":"","width":1552,"height":615},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3605309,"resolution":"2","location":"assets","locale":"","width":1552,"height":615},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3605309,"resolution":"3","location":"assets","locale":"","width":1552,"height":615},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3605309,"resolution":"4","location":"assets","locale":"","width":1552,"height":615}},"screenshots":[]},"plugin_section":[],"plugin_tags":[1339,2250,3733,1541,3800],"plugin_category":[],"plugin_contributors":[264944],"plugin_business_model":[],"class_list":["post-337860","plugin","type-plugin","status-publish","hentry","plugin_tags-admin-bar","plugin_tags-frontend","plugin_tags-hover","plugin_tags-toolbar","plugin_tags-ux","plugin_contributors-neutropeinc","plugin_committers-neutropeinc"],"banners":{"banner":"https:\/\/ps.w.org\/teenybar\/assets\/banner-772x250.png?rev=3605309","banner_2x":"https:\/\/ps.w.org\/teenybar\/assets\/banner-1544x500.png?rev=3605309","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/teenybar\/assets\/icon-128x128.png?rev=3605309","icon_2x":"https:\/\/ps.w.org\/teenybar\/assets\/icon-256x256.png?rev=3605309","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/teenybar\/assets\/screenshot-1.png?rev=3605309","caption":""},{"src":"https:\/\/ps.w.org\/teenybar\/assets\/screenshot-2.png?rev=3605309","caption":""},{"src":"https:\/\/ps.w.org\/teenybar\/assets\/screenshot-3.png?rev=3605309","caption":""},{"src":"https:\/\/ps.w.org\/teenybar\/assets\/screenshot-4.png?rev=3605309","caption":""}],"raw_content":"<!--section=description-->\n<p>TeenyBar is a lightweight plugin that hides the WordPress Admin Bar on the front end of your site while you are logged in, and only reveals it when you move the mouse into a configured hotzone. No persistent Show button, toggle, or icon is added to the front end, so screenshots and design reviews stay clean.<\/p>\n\n<ul>\n<li>No persistent \"Show\" button, toggle, or icon is rendered on the front end.<\/li>\n<li>Choose one hotzone (top-left corner, top edge, or top-right corner). The Admin Bar appears only while the mouse is near it.<\/li>\n<li>While the Admin Bar is visible, the page is pushed down by the Admin Bar height. As soon as the mouse leaves, the top offset returns to zero.<\/li>\n<li>The WordPress admin (wp-admin) is not affected: the Admin Bar behaves normally there.<\/li>\n<li>The Admin Bar background color can be changed with a color picker.<\/li>\n<li>The audience can be limited to administrators or expanded to every logged-in user.<\/li>\n<li>Fixed-header compatibility mode: for themes with a <code>position: fixed<\/code> or <code>sticky<\/code> header, you can enter one or more CSS selectors. While the Admin Bar is visible the matching elements are pushed down by 32px (PC) or 46px (mobile), preventing them from being hidden behind the Admin Bar. While the Admin Bar is hidden the offset is forced to zero so no gap remains at the top of the page.<\/li>\n<li>Auto-detect button: the settings screen ships with an \"Auto-detect\" button that loads the front page in a hidden iframe, looks for sticky \/ fixed header candidates before and after scrolling, and fills the CSS selector field with the best guess. Nothing is saved until you confirm.<\/li>\n<li>Reveal \/ hide delays: choose how long to wait after entering a hotzone before the Admin Bar appears (0, 100, 200, or 300 ms), and how long to wait after leaving before it hides (100, 200, 300, 500, 800, or 1000 ms).<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP from \"Plugins &gt; Add New &gt; Upload Plugin\" in the WordPress admin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to \"Settings &gt; TeenyBar\" and configure the hotzone, audience, background color, fixed-header selector, and reveal \/ hide delays as needed.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20affect%20the%20wordpress%20admin%20screen%3F\"><h3>Does this affect the WordPress admin screen?<\/h3><\/dt>\n<dd><p>No. The Admin Bar behaves normally inside <code>wp-admin<\/code>. The hide \/ hover behavior only applies to the front end.<\/p><\/dd>\n<dt id=\"my%20theme%20has%20a%20fixed%20header.%20the%20admin%20bar%20overlaps%20it.\"><h3>My theme has a fixed header. The Admin Bar overlaps it.<\/h3><\/dt>\n<dd><p>Enable fixed-header compatibility by entering a CSS selector that matches your header (for example, <code>header.site-header<\/code>, <code>#masthead<\/code>, or <code>header.is-sticky<\/code>). You can list multiple selectors separated by commas. The \"Auto-detect\" button in the settings screen can suggest one for you.<\/p><\/dd>\n<dt id=\"my%20theme%20leaves%20a%2032px%20%2F%2046px%20gap%20at%20the%20top%20even%20when%20the%20admin%20bar%20is%20hidden.\"><h3>My theme leaves a 32px \/ 46px gap at the top even when the Admin Bar is hidden.<\/h3><\/dt>\n<dd><p>That is exactly the case TeenyBar is designed to fix. From v0.3.2 onwards, WordPress core's <code>_admin_bar_bump_cb<\/code> is removed on TeenyBar-enabled front-end pages, and the plugin also resets <code>margin-top<\/code> \/ <code>padding-top<\/code> on <code>html<\/code> and <code>body.admin-bar<\/code> while the bar is hidden. v0.4.0 added auto-detection for fixed headers, and v0.4.1 is a maintenance release that prepares the plugin for the WordPress plugin directory.<\/p><\/dd>\n<dt id=\"will%20the%20auto-detect%20button%20save%20automatically%3F\"><h3>Will the auto-detect button save automatically?<\/h3><\/dt>\n<dd><p>No. The button only fills in the selector field. Review the result and press \"Save Changes\" if you are happy with it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.4<\/h4>\n\n<ul>\n<li>Updated internal prefixes and contributor metadata for WordPress.org review. No functional changes.<\/li>\n<\/ul>\n\n<h4>0.4.3<\/h4>\n\n<ul>\n<li>Renamed the main plugin file to <code>teenybar.php<\/code> to align the distributable package with the WordPress.org plugin slug.<\/li>\n<li>Updated plugin metadata URLs for WordPress.org submission.<\/li>\n<li>No behavior changes for end users.<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Added <code>Requires at least: 5.8<\/code> and <code>Requires PHP: 7.4<\/code> headers to the main plugin file so WordPress can surface compatibility requirements.<\/li>\n<li>No behavior changes for end users.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Maintenance release preparing the plugin for submission to the WordPress plugin directory.<\/li>\n<li>Renamed the public name to \"TeenyBar\" and switched the text domain to <code>teenybar<\/code>.<\/li>\n<li>Reworked dynamic CSS output to use <code>wp_add_inline_style()<\/code> and switched the bootstrap script to <code>wp_print_inline_script_tag()<\/code> to satisfy the WPCS escape rules.<\/li>\n<li>Removed the manual <code>load_plugin_textdomain()<\/code> call (WordPress 4.6+ loads it automatically for plugins hosted on WordPress.org).<\/li>\n<li>Bumped \"Tested up to\" to 7.0.<\/li>\n<li>Translated <code>readme.txt<\/code> to English.<\/li>\n<li>No behavior changes for end users.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Added an \"Auto-detect\" button to the settings screen.<\/li>\n<li>The button opens the front page in a hidden iframe and looks for fixed \/ sticky header candidates before and after scrolling, then fills the CSS selector field with the best match.<\/li>\n<li>Auto-detection acts as an input helper before save; the manual \/ confirm \/ save flow is preserved.<\/li>\n<\/ul>\n\n<h4>0.3.5<\/h4>\n\n<ul>\n<li>Limited the fixed-header compatibility shift to elements that are currently <code>position: fixed<\/code> or <code>sticky<\/code>.<\/li>\n<li>Fixed a case where pre-scroll static navs received the top offset and only the link text was pushed down.<\/li>\n<\/ul>\n\n<h4>0.3.4<\/h4>\n\n<ul>\n<li>Switched the fixed-header top adjustment to inline <code>!important<\/code> so it can win against themes that set <code>top: 0 !important<\/code> themselves.<\/li>\n<li>Saved and restored the original inline <code>top<\/code> value and priority so theme inline styles are not lost.<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>Strengthened fixed-header compatibility: the top adjustment is now reapplied after scroll, resize, and DOM \/ class mutations on the configured selectors.<\/li>\n<li>Addressed cases where a fixed header that appears after scrolling would overlap the Admin Bar.<\/li>\n<li>Preserved the <code>show_delay<\/code> \/ <code>hide_delay<\/code> behavior and the no-extra-UI policy.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Hotfix: removed WordPress core's <code>_admin_bar_bump_cb<\/code> from <code>wp_head<\/code> on TeenyBar-enabled front-end pages so core no longer emits <code>html { margin-top: 32px !important; }<\/code>.<\/li>\n<li>Strengthened the <code>margin-top<\/code> \/ <code>padding-top<\/code> reset on <code>html<\/code> and <code>body<\/code> while the Admin Bar is hidden.<\/li>\n<li>The visible-state push-down is now centralized on the <code>teenybar-bar-visible<\/code> class (32px PC \/ 46px mobile).<\/li>\n<li>The fixed-header compatibility flag is now derived from the selector value (empty means OFF, non-empty means ON) to prevent invalid <code>OFF + header.nt-header<\/code> combinations.<\/li>\n<li>Fixed-header compatibility, <code>show_delay<\/code>, and <code>hide_delay<\/code> behavior are unchanged.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Hotfix: added CSS that cancels the <code>margin-top<\/code> \/ <code>padding-top<\/code> themes apply to <code>body.admin-bar<\/code> while the Admin Bar is hidden, fixing the residual gap at the top of the page.<\/li>\n<li>While the Admin Bar is hidden with fixed-header compatibility ON, the configured elements' <code>top<\/code> \/ <code>margin-top<\/code> are explicitly reset to 0 to override theme rules such as <code>.admin-bar header { top: 32px }<\/code>.<\/li>\n<li>The hidden-state correction is applied from the initial render, so there is no flash before the first hover.<\/li>\n<li>Strengthened the <code>pagehide<\/code> cleanup so all managed elements are restored to their original inline <code>top<\/code>.<\/li>\n<li>No impact on <code>show_delay<\/code> \/ <code>hide_delay<\/code> or hotzone behavior.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Added a reveal delay (0 \/ 100 \/ 200 \/ 300 ms, default 0 ms).<\/li>\n<li>Added a hide delay (100 \/ 200 \/ 300 \/ 500 \/ 800 \/ 1000 ms, default 100 ms).<\/li>\n<li>Leaving the hotzone before the reveal delay fires cancels the reveal entirely.<\/li>\n<li>Returning to the Admin Bar \/ hotzone before the hide delay fires keeps the bar visible.<\/li>\n<li>Defaults are close to the v0.2.0 feel (0 ms \/ 100 ms), so existing behavior is preserved.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added fixed-header compatibility mode (OFF \/ ON + CSS selector). While the Admin Bar is visible the matching elements are pushed down 32px \/ 46px, and the original inline <code>top<\/code> is restored on hide.<\/li>\n<li><code>prefers-reduced-motion: reduce<\/code> now suppresses the Admin Bar transition.<\/li>\n<li>Exposed the <code>--teenybar-bar-h<\/code> CSS variable so themes can drive their own header offsets.<\/li>\n<li>No behavior change with defaults (compatibility OFF and empty selector).<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial MVP release.<\/li>\n<\/ul>","raw_excerpt":"TeenyBar hides the front-end Admin Bar until needed, with hot zones, fixed-header support, and timing controls.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/337860","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=337860"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/neutropeinc"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=337860"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=337860"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=337860"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=337860"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=337860"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=337860"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}