{"id":12450,"date":"2011-05-20T03:29:53","date_gmt":"2011-05-20T03:29:53","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/wp-print-friendly\/"},"modified":"2026-01-19T22:00:40","modified_gmt":"2026-01-19T22:00:40","slug":"wp-print-friendly","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/wp-print-friendly\/","author":887574,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.6.4","stable_tag":"0.6.4","tested":"6.9.4","requires":"3.1","requires_php":"","requires_plugins":null,"header_name":"WP Print Friendly","header_author":"Erick Hitter, Steven K Word, and Oomph, Inc.","header_description":"","assets_banners_color":"","last_updated":"2026-01-19 22:00:40","external_support_url":"","external_repository_url":"","donate_link":"http:\/\/www.thinkoomph.com\/plugins-modules\/wp-print-friendly\/","header_plugin_uri":"http:\/\/oomphinc.com\/plugins-modules\/wp-print-friendly\/","header_author_uri":"http:\/\/oomphinc.com\/","rating":3.5,"author_block_rating":0,"active_installs":500,"downloads":48227,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3":{"tag":"0.3","author":"ethitter","date":"2011-05-20 03:53:10"},"0.3.1":{"tag":"0.3.1","author":"ethitter","date":"2011-06-08 17:16:19"},"0.3.2":{"tag":"0.3.2","author":"ethitter","date":"2011-06-08 17:11:11"},"0.4":{"tag":"0.4","author":"ethitter","date":"2011-08-13 23:27:55"},"0.4.1":{"tag":"0.4.1","author":"ethitter","date":"2011-08-13 23:55:39"},"0.4.2":{"tag":"0.4.2","author":"ethitter","date":"2011-08-16 21:02:27"},"0.4.2.1":{"tag":"0.4.2.1","author":"ethitter","date":"2011-08-17 16:07:28"},"0.4.2.2":{"tag":"0.4.2.2","author":"ethitter","date":"2011-08-17 16:42:41"},"0.4.3":{"tag":"0.4.3","author":"ethitter","date":"2011-09-03 01:21:30"},"0.4.3.1":{"tag":"0.4.3.1","author":"ethitter","date":"2011-09-03 14:12:32"},"0.4.3.2":{"tag":"0.4.3.2","author":"ethitter","date":"2011-09-03 18:21:28"},"0.4.3.3":{"tag":"0.4.3.3","author":"ethitter","date":"2011-09-07 16:03:02"},"0.4.4":{"tag":"0.4.4","author":"ethitter","date":"2011-10-25 16:50:08"},"0.4.4.1":{"tag":"0.4.4.1","author":"ethitter","date":"2012-05-30 02:53:56"},"0.5":{"tag":"0.5","author":"ethitter","date":"2012-06-03 21:43:33"},"0.5.1":{"tag":"0.5.1","author":"ethitter","date":"2012-06-03 22:08:41"},"0.5.2":{"tag":"0.5.2","author":"ethitter","date":"2012-11-04 19:45:08"},"0.5.3":{"tag":"0.5.3","author":"stevenkword","date":"2013-04-24 21:18:29"},"0.6":{"tag":"0.6","author":"ethitter","date":"2014-12-17 19:22:13"},"0.6.1":{"tag":"0.6.1","author":"ethitter","date":"2018-08-21 14:55:27"},"0.6.2":{"tag":"0.6.2","author":"ethitter","date":"2022-06-11 18:26:44"},"0.6.3":{"tag":"0.6.3","author":"ethitter","date":"2022-06-25 21:10:07"},"0.6.4":{"tag":"0.6.4","author":"ethitter","date":"2026-01-19 22:00:40"}},"upgrade_notice":{"0.6.4":"<p>Fixes translation support.<\/p>","0.6.3":"<p>Fixes translation support.<\/p>","0.6.2":"<p>Resolves a warning arising in PHP 7.3.<\/p>","0.6.1":"<p>Security update: correct misuse of <code>add_query_arg()<\/code> as identified by Sucuri: https:\/\/blog.sucuri.net\/2015\/04\/security-advisory-xss-vulnerability-affecting-multiple-wordpress-plugins.html.<\/p>","0.6":"<p>Recommended for all users as this release addresses security vulnerabilities related to privately-published and password-protected posts.<\/p>","0.5.2":"<p>Resolves a problem where requests for print templates redirect to the article.<\/p>","0.5.1":"<p>Ensure that proper query string is built when verbose page rules are required.<\/p>","0.5":"<p>Adds better support for sites that use verbose page rules, resolving situations where requests for print template redirect to the post.<\/p>","0.4.4.1":"<p>Removes unnecessary query_var filter.<\/p>","0.4.4":"<p>Adds full child theme and template hierarchy support for template selection. Simplifies rewrite rules.<\/p>","0.4.3.3":"<p>Corrects a few errors related to paged posts and further enhances compatibility with View All Post&#039;s Pages plugin.<\/p>","0.4.3.2":"<p>Fixes a minor bug in plugin&#039;s options retrieval and enhances compatibility with forthcoming View All Post&#039;s Pages plugin.<\/p>","0.4.3.1":"<p>Fixes a bug in plugin&#039;s options retrieval that caused print links to be added to default post types if no post types were chosen. Also resolves a PHP notice encountered when using default permalinks.<\/p>","0.4.3":"<p>Fixes various bugs in the print link, page numbering, and endnote generating functions. Also introduces a class variable for permalink component. Default template is updated to be more SEO friendly, now containing both canonical URL and nofollow declarations.<\/p>","0.4.2.2":"<p>Rewrite rules for custom post types are now generated correctly.<\/p>","0.4.2.1":"<p>Version 0.4.2 omitted the default template.<\/p>","0.4.2":"<p>This release expands the plugin&#039;s page rewrite rules to accomodate permalink structures that necessitate verbose rules, such as when the structure begins with <code>%postname%<\/code>.<\/p>","0.4.1":"<p>This release fixes bug that displayed post links automatically on the wrong post types.<\/p>","0.4":"<p>This release addresses numerous bugs reported by the community, including print templates for child pages. All admin text, save the plugin&#039;s name, are now ready for translation. Templates are now completely customizable, and new template functions are included.<\/p>"},"ratings":{"1":0,"2":"1","3":0,"4":0,"5":"1"},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3","0.3.1","0.3.2","0.4","0.4.1","0.4.2","0.4.2.1","0.4.2.2","0.4.3","0.4.3.1","0.4.3.2","0.4.3.3","0.4.4","0.4.4.1","0.5","0.5.1","0.5.2","0.5.3","0.6","0.6.1","0.6.2","0.6.3","0.6.4"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[3153,13218,893,975],"plugin_category":[43],"plugin_contributors":[77526,81434,77762],"plugin_business_model":[],"class_list":["post-12450","plugin","type-plugin","status-publish","hentry","plugin_tags-print","plugin_tags-printable","plugin_tags-printer","plugin_tags-template","plugin_category-customization","plugin_contributors-ethitter","plugin_contributors-stevenkword","plugin_contributors-thinkoomph","plugin_committers-ethitter","plugin_committers-thinkoomph"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/wp-print-friendly.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Extends WordPress' template system to support printer-friendly templates for posts, pages, and custom post types. Uses WP standard template naming to support templates on a post-type basis. Supports printing paged posts on single page. Adds nice URLs for printer-friendly pages.<\/p>\n\n<p><strong>IMPORTANT<\/strong>: There are certain plugins that may interfere with this plugin's functionality. See the <strong>FAQ<\/strong> for more information.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload wp-print-friendly.php to \/wp-content\/plugins\/.<\/li>\n<li>Activate plugin through the WordPress Plugins menu.<\/li>\n<li>Navigate to Options &gt; Permalinks and click <em>Save Changes<\/em> to update navigation.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"print%20links%20don%27t%20work\"><h3>Print links don't work<\/h3><\/dt>\n<dd><p>First, navigate to Options &gt; Permalinks in WP Admin, click <em>Save Changes<\/em>, and try again.<\/p>\n\n<p>If clicking on a print link takes you back to the post or page where the link appeared, see the <strong>Known Plugin Conflicts<\/strong> item below.<\/p>\n\n<p>If, after reviewing the remaining FAQ, you are still experiencing problems, visit <a href=\"http:\/\/www.thinkoomph.com\/plugins-modules\/wp-print-friendly\/\">http:\/\/www.thinkoomph.com\/plugins-modules\/wp-print-friendly\/<\/a> and leave a comment detailing the problem.<\/p><\/dd>\n<dt id=\"how%20should%20i%20name%20print%20templates%3F\"><h3>How should I name print templates?<\/h3><\/dt>\n<dd><p>Print templates should be prefixed with <em>wpf<\/em> and follow WordPress template conventions from there. To use one template for all contexts unless otherwise specified, name your template <em>wpf.php.<\/em><\/p>\n\n<p>For both built-in and custom post types, <em>wpf-[post type name].php<\/em> will be used for that post type. To use a template for a single post type object, name your template <em>wpf-[post type name]-[slug].php<\/em>.<\/p>\n\n<p>For custom taxonomies, follow the naming conventions for post types.<\/p>\n\n<p>Similarly, <em>wpf-home.php<\/em> will load that template for the front page of your site.<\/p>\n\n<p>The plugin also includes a default template that may suit many needs.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20a%20print%20link%20to%20my%20templates%3F\"><h3>How do I add a print link to my templates?<\/h3><\/dt>\n<dd><p>The function <code>wpf_the_print_link<\/code> will add a link to the print-friendly version of whatever page it appears on. This function accepts the following arguments:<\/p>\n\n<ul>\n<li><strong>$page_link<\/strong>: Set to true to add a link to the current page in a paged post in addition a to a link for the entire post.<\/li>\n<li><strong>$link_text<\/strong>: Set to text that should appear for the print link. Defaults to <em>Print this post<\/em>.<\/li>\n<li><strong>$class<\/strong>: Specifies the CSS class for the print link. Defaults to <em>print_link<\/em>.<\/li>\n<li><strong>$page_link_separator<\/strong>: If $page_link is true, specifies what separator will appear between the print link for the entire post and the print link for the current page of the post.<\/li>\n<li><strong>$page_link_text<\/strong>: If $page_link is true, specifies what text will appear for the print link for the current page. Defaults to <em>Print this page<\/em>.<\/li>\n<li><strong>$link_target<\/strong>: If set to \"new\", print links will open in a new window.<\/li>\n<\/ul><\/dd>\n<dt id=\"known%20plugin%20conflicts\"><h3>Known Plugin Conflicts<\/h3><\/dt>\n<dd><p>This plugin is known to conflict with certain plugins, many pertaining to SEO and permalinks. Conflicting plugins include, but are not limited to, the following:<\/p>\n\n<ul>\n<li><strong>WordPress SEO by Yoast:<\/strong> This plugin's <code>Permalink<\/code> options, particularly <em>Redirect attachment URL's to parent post URL<\/em> and <em>Redirect ugly URL's to clean permalinks. (Not recommended in many cases!)<\/em>, interfere with WP Print Friendly's ability to display print templates. Both must be disabled, and the site's rewrite rules regenerated (by visiting Options &gt; Permalinks and clicking <em>Save Changes<\/em>), for WP Print Friendly to function.<\/li>\n<\/ul><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.6.4<\/h4>\n\n<ul>\n<li>Fix translation support.<\/li>\n<\/ul>\n\n<h4>0.6.3<\/h4>\n\n<ul>\n<li>Fix translation support.<\/li>\n<\/ul>\n\n<h4>0.6.2<\/h4>\n\n<ul>\n<li>PHP 7.3 compatibility.<\/li>\n<\/ul>\n\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>Security update: correct misuse of <code>add_query_arg()<\/code> as identified by Sucuri: https:\/\/blog.sucuri.net\/2015\/04\/security-advisory-xss-vulnerability-affecting-multiple-wordpress-plugins.html.<\/li>\n<\/ul>\n\n<h4>0.6<\/h4>\n\n<ul>\n<li>Revert security hotfixes made in 0.5.3 and address the vulnerabilities in the WordPress way.<\/li>\n<li>If current user can't read a private post, don't display the print template, allowing the standard theme to handle requests.<\/li>\n<li>If a post is password protected and the viewer hasn't provided the right password, display the password form and prevent plugin from exposing any information about the post that WordPress doesn't already.<\/li>\n<li>When WordPress determines a request is a 404, don't activate the plugin's templating functionality.<\/li>\n<li>Convert the plugin to a singleton.<\/li>\n<li>Audit entire plugin for translation readyness.<\/li>\n<li>Correct phpdoc.<\/li>\n<\/ul>\n\n<h4>0.5.3<\/h4>\n\n<ul>\n<li>Creates is_protected() method to determine if the print page should be visible to the current user<\/li>\n<li>Correct security vulnerability allowing both private and password protected posts from being accessed through the print page<\/li>\n<li>Remove print_url links from the content when the current user does not have the necessary capabilities to view the print page<\/li>\n<\/ul>\n\n<h4>0.5.2<\/h4>\n\n<ul>\n<li>Revert change in is_print() method made in version 0.5 as it breaks the method when no page number is specified. See <a href=\"https:\/\/github.com\/ethitter\/WP-Print-Friendly\/issues\/2\">https:\/\/github.com\/ethitter\/WP-Print-Friendly\/issues\/2<\/a>.<\/li>\n<\/ul>\n\n<h4>0.5.1<\/h4>\n\n<ul>\n<li>Correct construction of query needed in situations where verbose page rules are required.<\/li>\n<\/ul>\n\n<h4>0.5<\/h4>\n\n<ul>\n<li>Add additional rewrite rules for situations where verbose page rules are required.<\/li>\n<li>Disable canonical redirect when print template is requested.<\/li>\n<li>Update is_print() method to use WordPress API.<\/li>\n<li>Correct translation string implementation.<\/li>\n<li>Update code to better conform to WordPress Coding Standards.<\/li>\n<\/ul>\n\n<h4>0.4.4.1<\/h4>\n\n<ul>\n<li>Remove unnecessary query_var filter.<\/li>\n<\/ul>\n\n<h4>0.4.4<\/h4>\n\n<ul>\n<li>Full support for child themes.<\/li>\n<li>Expand template choosing to fully support WordPress template hierarchy as described at <a href=\"http:\/\/codex.wordpress.org\/Template_Hierarchy\">http:\/\/codex.wordpress.org\/Template_Hierarchy<\/a>.<\/li>\n<li>Simplify rewrite rules creation.<\/li>\n<\/ul>\n\n<h4>0.4.3.3<\/h4>\n\n<ul>\n<li>Correct error that would display wrong page's content when printing a single page of a paged post.<\/li>\n<li>Correct error in link generation for page-specific print links.<\/li>\n<li>Increase compatibility with View All Post's Pages plugin.<\/li>\n<\/ul>\n\n<h4>0.4.3.2<\/h4>\n\n<ul>\n<li>Resolve PHP notice in options retrieval.<\/li>\n<li>Add compatibility with View All Post's Pages plugin (release forthcoming).<\/li>\n<\/ul>\n\n<h4>0.4.3.1<\/h4>\n\n<ul>\n<li>Fix bug in options retrieval that caused print links to be added to default post types if no post types were selected.<\/li>\n<li>Resolve PHP notice when using default permalinks.<\/li>\n<\/ul>\n\n<h4>0.4.3<\/h4>\n\n<ul>\n<li>Fix bug in page number function.<\/li>\n<li>Rewrite endnote link processing, including a refined regex pattern.<\/li>\n<li>Introduce class property for print slug.<\/li>\n<li>Correct minor bug in print link generation.<\/li>\n<li>Add canonical link attribute and nofollow declaration to default template.<\/li>\n<\/ul>\n\n<h4>0.4.2.2<\/h4>\n\n<ul>\n<li>Correct generation of custom post type rewrite rules.<\/li>\n<\/ul>\n\n<h4>0.4.2.1<\/h4>\n\n<ul>\n<li>Version 0.4.2 omitted the default template.<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Correct page rewrite rules to accomodate situations necessitating verbose rules, such as when the permalink structure starts with <code>%postname%<\/code>. Thanks to Wes Herzik at ikonic for discovering and reporting this issue.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Fix bug that displayed post links automatically on the wrong post types.<\/li>\n<\/ul>\n\n<h4>0.4<\/h4>\n\n<ul>\n<li>Child pages now fully supported.<\/li>\n<li>Generates and registers rewrite rules more efficiently.<\/li>\n<li>Rewrite setting for all post types and taxonomies are now considered when adding print support.<\/li>\n<li>Add option to disable endnotes representing links found in content.<\/li>\n<li>Move copyright and other static elements from content filters to default template.<\/li>\n<li>Add function to display page numbers when printing single page of post.<\/li>\n<li>Options page is now fully translation-ready.<\/li>\n<li>Notices are translation-ready.<\/li>\n<li>Correct various other bugs, including many related to non-standard permalink structures, custom post types, and custom taxonomies.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Add option to open print-friendly views in a new window.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Correct PHP error in <code>is_print()<\/code>.<\/li>\n<\/ul>\n\n<h4>0.3<\/h4>\n\n<ul>\n<li>Initial version.<\/li>\n<\/ul>","raw_excerpt":"Extends WordPress&#039; template system to support printer-friendly templates. Works with permalink structures to support nice URLs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/12450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=12450"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ethitter"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=12450"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=12450"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=12450"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=12450"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=12450"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=12450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}