{"id":23211,"date":"2013-05-01T03:58:16","date_gmt":"2013-05-01T03:58:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/pull-quotes\/"},"modified":"2026-07-19T21:19:32","modified_gmt":"2026-07-19T21:19:32","slug":"pull-quotes","status":"publish","type":"plugin","link":"https:\/\/hy.wordpress.org\/plugins\/pull-quotes\/","author":140668,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.0","stable_tag":"2.0.0","tested":"7.0.2","requires":"7.0","requires_php":"8.3","requires_plugins":null,"header_name":"Pull Quotes","header_author":"Aaron D. Campbell","header_description":"","assets_banners_color":"fefefd","last_updated":"2026-07-19 21:19:32","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/aarondcampbell.com\/wordpress-plugin\/pull-quotes\/","header_author_uri":"https:\/\/aarondcampbell.com\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":4752,"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":"aaroncampbell","date":"2013-05-01 03:58:59"},"1.0.1":{"tag":"1.0.1","author":"aaroncampbell","date":"2014-06-09 12:47:16"},"1.0.2":{"tag":"1.0.2","author":"aaroncampbell","date":"2017-03-26 19:16:09"},"2.0.0":{"tag":"2.0.0","author":"aaroncampbell","date":"2026-07-19 21:19:32"}},"upgrade_notice":{"2.0.0":"<p>Requires WordPress 7.0 and PHP 8.3. Block content can be batch-migrated under Tools \u2192 Pull Quotes Migration; classic posts should be converted to blocks in the editor.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3613937,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3613937,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3613937,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3613937,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3613937,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","2.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3613937,"resolution":"1","location":"assets","locale":"","width":1440,"height":731},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3613937,"resolution":"2","location":"assets","locale":"","width":1425,"height":891}},"screenshots":{"1":"Select text in the block editor, apply the Pull quote format, and configure its offset, direction, and alignment.","2":"The selected sentence remains in the article while a styled pull quote is positioned alongside the surrounding text."}},"plugin_section":[],"plugin_tags":[1953,148857,8656,5126,1811],"plugin_category":[34,43,46],"plugin_contributors":[78311],"plugin_business_model":[],"class_list":["post-23211","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-block-editor","plugin_tags-pull-quote","plugin_tags-typography","plugin_tags-writing","plugin_category-accessibility","plugin_category-customization","plugin_category-editor-and-writing","plugin_contributors-aaroncampbell","plugin_committers-aaroncampbell"],"banners":{"banner":"https:\/\/ps.w.org\/pull-quotes\/assets\/banner-772x250.png?rev=3613937","banner_2x":"https:\/\/ps.w.org\/pull-quotes\/assets\/banner-1544x500.png?rev=3613937","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/pull-quotes\/assets\/icon.svg?rev=3613937","icon":"https:\/\/ps.w.org\/pull-quotes\/assets\/icon.svg?rev=3613937","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/pull-quotes\/assets\/screenshot-1.png?rev=3613937","caption":"Select text in the block editor, apply the Pull quote format, and configure its offset, direction, and alignment."},{"src":"https:\/\/ps.w.org\/pull-quotes\/assets\/screenshot-2.png?rev=3613937","caption":"The selected sentence remains in the article while a styled pull quote is positioned alongside the surrounding text."}],"raw_content":"<!--section=description-->\n<p>Pull Quotes adds an inline Rich Text format to the block editor. Select text, choose Pull quote, then set its offset, direction, and alignment.<\/p>\n\n<p>The selected sentence remains in the body. On the front end, Pull Quotes removes the inline authoring marker and inserts an aria-hidden decorative aside before the resolved block. Rendering is performed server-side and does not require jQuery.<\/p>\n\n<p>Version 2.0 supports block-authored content only and does not render legacy pullquote shortcodes at runtime.<\/p>\n\n<p>Collaborate on the plugin: <a href=\"https:\/\/github.com\/aaroncampbell\/pull-quotes\">Pull Quotes on GitHub<\/a><\/p>\n\n<p>Brought to you by <a href=\"https:\/\/aarondcampbell.com\/\" title=\"WordPress Plugins\">Aaron D. Campbell<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate Pull Quotes.<\/li>\n<li>In the block editor, select text in a Rich Text block and choose Pull quote from the block toolbar.<\/li>\n<li>Choose an offset, direction, and alignment, then apply the format.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20does%20an%20offset%20of%20zero%20do%3F\"><h3>What does an offset of zero do?<\/h3><\/dt>\n<dd><p>It inserts the floated aside immediately before the block containing the selected sentence.<\/p><\/dd>\n<dt id=\"how%20are%20larger%20offsets%20resolved%3F\"><h3>How are larger offsets resolved?<\/h3><\/dt>\n<dd><p>The plugin moves through visible authored blocks in the selected back or forward direction. Parser whitespace, generated pull quotes, and moves out of nested containers do not count. The aside is inserted before the resolved block.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20the%20original%20sentence%3F\"><h3>What happens to the original sentence?<\/h3><\/dt>\n<dd><p>It stays in the body's normal reading flow. Only the duplicate aside is hidden from assistive technology.<\/p><\/dd>\n<dt id=\"how%20do%20i%20migrate%20legacy%20shortcodes%3F\"><h3>How do I migrate legacy shortcodes?<\/h3><\/dt>\n<dd><p>Use Tools \u2192 Pull Quotes Migration for existing block posts, or run <code>wp pull-quotes migrate<\/code>. Use <code>wp pull-quotes migrate --dry-run<\/code> to preview the batch. For a classic post, open it and use Convert to blocks; the editor converts pullquote shortcodes during Core's conversion.<\/p><\/dd>\n<dt id=\"does%20version%202.0%20support%20the%20classic%20editor%3F\"><h3>Does version 2.0 support the Classic Editor?<\/h3><\/dt>\n<dd><p>No. Version 2.0 is block-only, and legacy pullquote shortcodes are not registered as a runtime shortcode.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Require PHP 8.3 and WordPress 7.0.<\/li>\n<li>Add a block-editor Rich Text format with offset, direction, and alignment controls.<\/li>\n<li>Render pull quotes server-side using parsed block structure, without jQuery.<\/li>\n<li>Keep quoted sentences in the reading flow and hide decorative copies from assistive technology.<\/li>\n<li>Add admin, WP-CLI, and Convert-to-blocks migration paths for legacy shortcodes.<\/li>\n<li>Remove classic-editor integrations and runtime shortcode support.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Allow forward and back parameters to be set to 0.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Add support for new TinyMCE.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Released to the WordPress.org repository.<\/li>\n<\/ul>","raw_excerpt":"Mark existing post text and echo it as an accessible, server-rendered floated callout.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/23211","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"author":[{"embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/users\/140668"}],"replies":[{"embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=23211"}],"wp:attachment":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=23211"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=23211"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=23211"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=23211"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=23211"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=23211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}