{"id":384240,"date":"2026-10-11T05:23:49","date_gmt":"2026-10-11T05:23:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ghostline\/"},"modified":"2026-10-11T06:19:30","modified_gmt":"2026-10-11T06:19:30","slug":"ghostline","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ghostline\/","author":14062917,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.3","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Ghostline","header_author":"Ghostline contributors","header_description":"Adds subtle cursor animations, linked to the scroll, to selected text in headings and paragraphs.","assets_banners_color":"fcf2d0","last_updated":"2026-10-11 06:19:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","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":{"1.0.0":{"tag":"1.0.0","author":"utkarshpatel","date":"2026-10-11 05:23:40","revision":3738928},"1.1.0":{"tag":"1.1.0","author":"utkarshpatel","date":"2026-10-11 06:19:30","revision":3738969}},"upgrade_notice":{"1.1.0":"<p>Highlight now looks like a marker stroke. Existing highlights get the new look. You do not have to change your content.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3738928,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3738928,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3738928,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3738928,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3738928,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3738993,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"Ghostline demo\",\"description\":\"Installs Ghostline from WordPress.org and opens a page with all nine motions.\",\"author\":\"utkarshpatel\",\"categories\":[\"Content\"]},\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"latest\"},\"login\":true,\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"ghostline\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\n$content = <<<'HTML'\\n<!-- wp:paragraph --><p>Scroll down. Each motion plays when its text scrolls into view, and plays in reverse when you scroll back. To change the motions, edit this page in the block editor.<\\\/p><!-- \\\/wp:paragraph --><!-- wp:spacer {\\\"height\\\":\\\"40vh\\\"} --><div style=\\\"height:40vh\\\" aria-hidden=\\\"true\\\" class=\\\"wp-block-spacer\\\"><\\\/div><!-- \\\/wp:spacer --><!-- wp:heading --><h2 class=\\\"wp-block-heading\\\">Introducing <span data-ghostline-motion=\\\"move\\\" class=\\\"ghostline\\\">Intelligent UI<\\\/span><\\\/h2><!-- \\\/wp:heading --><!-- wp:paragraph --><p><span data-ghostline-motion=\\\"highlight\\\" class=\\\"ghostline\\\">Highlight marks the first sentence of this paragraph, one line at a time.<\\\/span> The rest stays as it is.<\\\/p><!-- \\\/wp:paragraph --><!-- wp:spacer {\\\"height\\\":\\\"40vh\\\"} --><div style=\\\"height:40vh\\\" aria-hidden=\\\"true\\\" class=\\\"wp-block-spacer\\\"><\\\/div><!-- \\\/wp:spacer --><!-- wp:paragraph --><p>Underline draws <span data-ghostline-motion=\\\"underline\\\" data-ghostline-color=\\\"accent-3\\\" class=\\\"ghostline\\\">a line below a phrase<\\\/span>, and strike draws <span data-ghostline-motion=\\\"strike\\\" class=\\\"ghostline\\\">a line through it<\\\/span>.<\\\/p><!-- \\\/wp:paragraph --><!-- wp:heading --><h2 class=\\\"wp-block-heading\\\">Then <span data-ghostline-motion=\\\"click\\\" data-ghostline-color=\\\"accent-3\\\" class=\\\"ghostline\\\">press Start<\\\/span> to begin<\\\/h2><!-- \\\/wp:heading --><!-- wp:spacer {\\\"height\\\":\\\"40vh\\\"} --><div style=\\\"height:40vh\\\" aria-hidden=\\\"true\\\" class=\\\"wp-block-spacer\\\"><\\\/div><!-- \\\/wp:spacer --><!-- wp:heading --><h2 class=\\\"wp-block-heading\\\">Hello, <span data-ghostline-motion=\\\"type\\\" class=\\\"ghostline\\\">Intelligent UI<\\\/span><\\\/h2><!-- \\\/wp:heading --><!-- wp:paragraph --><p>Circle marks the <span data-ghostline-motion=\\\"circle\\\" data-ghostline-color=\\\"accent-3\\\" class=\\\"ghostline\\\">key point<\\\/span>, and box marks <span data-ghostline-motion=\\\"box\\\" data-ghostline-color=\\\"accent-3\\\" class=\\\"ghostline\\\">another one<\\\/span>.<\\\/p><!-- \\\/wp:paragraph --><!-- wp:spacer {\\\"height\\\":\\\"40vh\\\"} --><div style=\\\"height:40vh\\\" aria-hidden=\\\"true\\\" class=\\\"wp-block-spacer\\\"><\\\/div><!-- \\\/wp:spacer --><!-- wp:heading --><h2 class=\\\"wp-block-heading\\\">Ship it <span data-ghostline-motion=\\\"replace\\\" data-ghostline-from=\\\"next quarter\\\" class=\\\"ghostline\\\">this week<\\\/span><\\\/h2><!-- \\\/wp:heading --><!-- wp:spacer {\\\"height\\\":\\\"40vh\\\"} --><div style=\\\"height:40vh\\\" aria-hidden=\\\"true\\\" class=\\\"wp-block-spacer\\\"><\\\/div><!-- \\\/wp:spacer -->\\nHTML;\\n$id = wp_insert_post(\\n\\tarray(\\n\\t\\t'post_type'    => 'page',\\n\\t\\t'post_status'  => 'publish',\\n\\t\\t'post_title'   => 'Ghostline demo',\\n\\t\\t'post_content' => $content,\\n\\t)\\n);\\nupdate_option( 'show_on_front', 'page' );\\nupdate_option( 'page_on_front', $id );\\n\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3738928,"resolution":"1","location":"assets","locale":"","width":1280,"height":1000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3738928,"resolution":"2","location":"assets","locale":"","width":760,"height":380},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3738969,"resolution":"3","location":"assets","locale":"","width":760,"height":380},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3738928,"resolution":"4","location":"assets","locale":"","width":520,"height":392}},"screenshots":{"1":"The Ghostline options in the block editor.","2":"The Move motion.","3":"The Highlight motion.","4":"The other motions: Underline, Strike, Click, Type, Circle, Box, and Replace."}},"plugin_section":[],"plugin_tags":[785,3986,71952,157671,5126],"plugin_category":[43,50],"plugin_contributors":[83990],"plugin_business_model":[],"class_list":["post-384240","plugin","type-plugin","status-publish","hentry","plugin_tags-animation","plugin_tags-highlight","plugin_tags-scroll-animation","plugin_tags-text-animation","plugin_tags-typography","plugin_category-customization","plugin_category-media","plugin_contributors-utkarshpatel","plugin_committers-utkarshpatel"],"banners":{"banner":"https:\/\/ps.w.org\/ghostline\/assets\/banner-772x250.png?rev=3738928","banner_2x":"https:\/\/ps.w.org\/ghostline\/assets\/banner-1544x500.png?rev=3738928","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ghostline\/assets\/icon.svg?rev=3738928","icon":"https:\/\/ps.w.org\/ghostline\/assets\/icon.svg?rev=3738928","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ghostline\/assets\/screenshot-1.png?rev=3738928","caption":"The Ghostline options in the block editor."},{"src":"https:\/\/ps.w.org\/ghostline\/assets\/screenshot-2.png?rev=3738928","caption":"The Move motion."},{"src":"https:\/\/ps.w.org\/ghostline\/assets\/screenshot-3.png?rev=3738969","caption":"The Highlight motion."},{"src":"https:\/\/ps.w.org\/ghostline\/assets\/screenshot-4.png?rev=3738928","caption":"The other motions: Underline, Strike, Click, Type, Circle, Box, and Replace."}],"raw_content":"<!--section=description-->\n<p>Ghostline adds cursor motions to text in headings and paragraphs. Select some words and apply the Ghostline format. When a visitor scrolls, a fake cursor operates the text. When the visitor scrolls back, the motion plays in reverse.<\/p>\n\n<p>https:\/\/youtu.be\/XgIgxSXQCXU<\/p>\n\n<h4>Motions<\/h4>\n\n<ul>\n<li><strong>Move<\/strong>: The cursor drags tilted text into its position.<\/li>\n<li><strong>Highlight<\/strong>: The cursor marks the text. A marker stroke stays on each line.<\/li>\n<li><strong>Underline<\/strong>: The cursor draws a line below the text.<\/li>\n<li><strong>Strike<\/strong>: The cursor draws a line through the text.<\/li>\n<li><strong>Click<\/strong>: The cursor clicks the text. A ring spreads out.<\/li>\n<li><strong>Type<\/strong>: A caret types the text, one character at a time.<\/li>\n<li><strong>Circle<\/strong>: The cursor draws a ring around the text.<\/li>\n<li><strong>Box<\/strong>: The cursor draws a box around the text.<\/li>\n<li><strong>Replace<\/strong>: The cursor strikes out old text. Then the new text is typed.<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Works in the core Heading, Paragraph, List, and Quote blocks.<\/li>\n<li>Options for each motion: type, theme color, delay, cursor style.<\/li>\n<li>Works with block themes and classic themes.<\/li>\n<li>Supports right-to-left languages.<\/li>\n<\/ul>\n\n<h4>Accessibility and performance<\/h4>\n\n<ul>\n<li>The real text always stays on the page. Screen readers do not read the cursor or the decoration.<\/li>\n<li>With \"reduce motion\" on, the text shows its final state immediately.<\/li>\n<li>Without JavaScript, the text shows as normal text.<\/li>\n<li>The motions do not move the page layout.<\/li>\n<li>The script loads only on pages that use a motion. The main script is about 4 KB (gzip).<\/li>\n<li>The plugin does not collect data or connect to external services.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>In the block editor, select some text in a Heading, Paragraph, List, or Quote block.<\/li>\n<li>In the block toolbar, open <strong>More<\/strong> (the arrow) and click <strong>Ghostline<\/strong>.<\/li>\n<li>Set the options in the popover.<\/li>\n<\/ol>\n\n<p>To change the options, put the cursor in the text and click <strong>Ghostline<\/strong> again.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20remove%20a%20motion%3F\"><h3>How do I remove a motion?<\/h3><\/dt>\n<dd><p>Put the cursor in the text. Click <strong>More<\/strong> &gt; <strong>Ghostline<\/strong> &gt; <strong>Remove Ghostline<\/strong>.<\/p><\/dd>\n<dt id=\"why%20does%20long%20text%20not%20wrap%3F\"><h3>Why does long text not wrap?<\/h3><\/dt>\n<dd><p>Move, Click, Type, Circle, Box, and Replace keep the text on one line. Use them for a few words. For a full sentence, use Highlight, Underline, or Strike.<\/p><\/dd>\n<dt id=\"does%20strike%20delete%20the%20text%3F\"><h3>Does Strike delete the text?<\/h3><\/dt>\n<dd><p>No. Strike is only a visual effect. For a real deletion, use the core Strikethrough format.<\/p><\/dd>\n<dt id=\"what%20do%20search%20engines%20get%20from%20replace%3F\"><h3>What do search engines get from Replace?<\/h3><\/dt>\n<dd><p>They get only the new text. The old text is a visual effect only.<\/p><\/dd>\n<dt id=\"does%20the%20motion%20replay%3F\"><h3>Does the motion replay?<\/h3><\/dt>\n<dd><p>Yes. The motion follows the scroll. It plays when you scroll down and reverses when you scroll up.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Highlight now looks like a marker stroke: uneven round ends, a small tilt, and a little past the text.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"A fake cursor moves, marks, or types the text that you select, when the text scrolls into view.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/384240","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=384240"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/utkarshpatel"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=384240"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=384240"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=384240"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=384240"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=384240"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=384240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}