Title: WP-Print
Author: Lester Chan
Published: <strong>ജനുവരി 3, 2006</strong>
Last modified: ഓഗസ്റ്റ്‌ 9, 2026

---

Search plugins

![](https://ps.w.org/wp-print/assets/banner-772x250.png?rev=3639534)

![](https://ps.w.org/wp-print/assets/icon.svg?rev=978022)

# WP-Print

 By [Lester Chan](https://profiles.wordpress.org/gamerz/)

[Download](https://downloads.wordpress.org/plugin/wp-print.3.0.0.zip)

 * [Details](https://ml.wordpress.org/plugins/wp-print/#description)
 * [Reviews](https://ml.wordpress.org/plugins/wp-print/#reviews)
 *  [Installation](https://ml.wordpress.org/plugins/wp-print/#installation)
 * [Development](https://ml.wordpress.org/plugins/wp-print/#developers)

 [Support](https://wordpress.org/support/plugin/wp-print/)

## Description

WP-Print adds a print link to your posts and pages. Following it gives the reader
a clean printable document: your content, its comments if you want them, and nothing
else — no theme, no sidebar, no navigation.

Every link in the printed article is numbered and its URL listed at the end, because
a reader holding a sheet of paper cannot click anything.

### Features

 * A printable version of any post, page or custom post type, at `/your-post/print/`
 * Every link footnoted with a number and listed at the end of the document
 * Optional comments, images, embedded video and featured image
 * `[donotprint]` for content that should never reach the printed page
 * One stylesheet in both text directions, with a dark mode for reading before printing
 * Templates and styles you can override from your theme

### Donations

I spent most of my free time creating, updating, maintaining and supporting these
plugins, if you really love my plugins and could spare me a couple of bucks, I will
really appreciate it. If not feel free to use it without any obligations.

### Usage

Add the print link to your theme inside the loop, wherever you want it to appear:

    ```
    if ( function_exists( 'wp_print' ) ) {
        print_link();
    }
    ```

    ```
    print_link( $post_text, $page_text, $display ) takes whether to print or return as its third argument. The first two used to override the link text and no longer do anything: the link is one HTML template on the settings screen, under Templates, and `%POST_TYPE%` in it becomes Post, Page or the name of whatever custom post type is being printed. They stay in the signature so that a theme still passing them keeps working.
    ```

If you would rather not have the link on every post, leave your theme alone and 
type `[print_link]` into the one post or page that needs it.

### Shortcodes

 * `[print_link]` — the print link, in the post or page it is typed into.
 * `[donotprint]Not for paper[/donotprint]` — the enclosed content is dropped from
   the printable version and left alone everywhere else. WP-Email honours the same
   tag, so text you exclude from print is excluded from email too.

### Template Tags

 * `print_link( $post_text, $page_text, $display )` — the print link. Only the third
   argument does anything.
 * `print_content( $display )` — the post content, prepared for printing.
 * `print_comments_content( $display )` — the current comment’s content.
 * `print_categories( $before, $after )` — the categories, each wrapped in your 
   markup.
 * `print_comments_number()` — the comment count as a sentence.
 * `print_links( $heading )` — the collected list of URLs.
 * `print_can( $type )` — whether one of the options is on.
 * `print_disclaimer()` — the disclaimer or copyright line.

### The Print Link

The print link is one HTML template, at `WP-Admin -> Settings -> WP-Print -> Templates`.
Three placeholders are replaced when it is rendered:

 * `%PRINT_URL%` — the URL of the printable version.
 * `%POST_TYPE%` — what is being printed, in the singular: Post, Page, or the name
   of a custom post type.
 * `%PRINT_ICON%` — the printer glyph, as an inline SVG that takes its colour from
   your theme.

Anything else is left in the markup exactly as you typed it. Restore Default Template
puts the shipped one back.

### Custom Template

WP-Print loads `print-posts.php`, `print-comments.php` and `print-css.css` from 
your theme’s directory if they exist, child theme first, then parent, then the copies
bundled with the plugin. Copy one into your theme to restyle the printable page 
without losing the change on upgrade.

The bundled copies moved in 3.0.0 — the templates are in `includes/` and the stylesheet
is `css/wp-print.css` — but the names your theme overrides them with are unchanged.

### Filters

 * `wp_print_capability` — the capability the settings screen requires. Defaults
   to `manage_options`.
 * `wp_print_allowed_html` — the tags the printed document may carry, in `wp_kses()`
   form. Add to it if a block on your site prints markup the default list does not
   cover.

## Screenshots

[⌊Settings -> WP-Print, choosing what the printable version carries⌉⌊Settings ->
WP-Print, choosing what the printable version carries⌉[

Settings -> WP-Print, choosing what the printable version carries

[⌊The Templates tab, holding the markup of the print link⌉⌊The Templates tab, holding
the markup of the print link⌉[

The Templates tab, holding the markup of the print link

[⌊The print link in a post, placed with the shortcode⌉⌊The print link in a post,
placed with the shortcode⌉[

The print link in a post, placed with the shortcode

[⌊The printable version, without the theme around it⌉⌊The printable version, without
the theme around it⌉[

The printable version, without the theme around it

## Installation

 1. Install and activate the plugin.
 2. Re-save your permalinks at `WP-Admin -> Settings -> Permalinks -> Save Changes`,
    so the `/print/` endpoint is registered. **The printable page returns a 404 until
    you do this.**
 3. Add the print link: type `[print_link]` into a post, or call `print_link()` in 
    your theme. Usage below covers both.
 4. Templates and options are at `WP-Admin -> Settings -> WP-Print`.

## FAQ

### How do I add the print link to my theme?

Open `wp-content/themes/<YOUR THEME NAME>/index.php`, and single.php, page.php and
any other template that runs the loop. Find `<?php while ( have_posts() ) : the_post();?
>` and add this anywhere below it:

    ```
    if ( function_exists( 'wp_print' ) ) {
        print_link();
    }
    ```

### The print link 404s

Re-save your permalinks at `WP-Admin -> Settings -> Permalinks`. WP-Print adds a`/
print/` endpoint, and WordPress only writes the rewrite rules out when that screen
is saved.

### How do I keep part of a post off the printed page?

Type this into the post:

    ```
    [donotprint]Text within this tag will not be displayed when printing[/donotprint]
    ```

The enclosed text is dropped from the printable version and shown as normal everywhere
else.

### Can I change how the printed page looks?

Yes, two ways. Copy `print-css.css` into your theme to replace the stylesheet outright,
or set any of the custom properties the bundled sheet uses — `--wp-print-font-family`,`--
wp-print-font-size`, `--wp-print-line-height`, `--wp-print-text`, `--wp-print-background`,`--
wp-print-rule` and `--wp-print-gap` — to retune it without forking the file.

### Is the print icon still an image I can choose?

No. The two bundled GIFs are one inline SVG that takes its colour from your theme
and stays sharp at any size, so there is nothing left to choose between and the 
Print Icon setting is gone.

### Where did Print Text Link For Post, For Page and Print Text Link Style go?

They are one HTML template, on the Templates tab. The style dropdown offered three
fixed markups and a custom template; the three were templates too, written in PHP
rather than in the box, so all four are now the box. Write the wording you want 
into it and use `%POST_TYPE%` where the words Post or Page used to differ. Your 
existing settings are converted on upgrade.

### What replaced %PRINT_TEXT%?

Nothing, because there is nothing left for it to stand for: it inserted whichever
of the two link labels applied, and the wording now lives in the template itself.
Use `%POST_TYPE%` for the part that changes between a post and a page. A template
still containing `%PRINT_TEXT%` renders it on the page as written, which is deliberate—
it is how you find the ones that need editing.

## Reviews

![](https://secure.gravatar.com/avatar/f442de9912d44f24e96b2d6fd6118d5625249f927be46c0139a7d29350fd177a?
s=60&d=retro&r=g)

### 󠀁[nice & good](https://wordpress.org/support/topic/nice-good-8/)󠁿

 [Abdechakour](https://profiles.wordpress.org/abdechakour/) ജനുവരി 14, 2021

Its exactly what i search, light and customisable

![](https://secure.gravatar.com/avatar/2da9a16eeccf3c15dcbeef9c3131129156c5f853893e6c7cf3e0b7017868244b?
s=60&d=retro&r=g)

### 󠀁[i love this plugin](https://wordpress.org/support/topic/i-love-this-plugin-357/)󠁿

 [coddy7](https://profiles.wordpress.org/coddy7/) ഫെബ്രുവരി 20, 2020

love this plugin

![](https://secure.gravatar.com/avatar/9bf5046b67cbdacde6e11ec9ad586e446fb5271885e0d00ad449c642530979f5?
s=60&d=retro&r=g)

### 󠀁[Color printing](https://wordpress.org/support/topic/color-printing/)󠁿

 [barrysklo](https://profiles.wordpress.org/barrysklo/) മാർച്ച്‌ 28, 2019

WP-Print is a nice plugin, very easy to use. I encounter a problem when printing
your special ‘print webpage’. Your webpage is always printed in black and white 
even the page has colored contents. Any idea? Many thanks!

![](https://secure.gravatar.com/avatar/36812e57454e91ab07ef49608bec19dd04c4e17ddd4113520b7975190806c40c?
s=60&d=retro&r=g)

### 󠀁[Easy and customizable](https://wordpress.org/support/topic/easy-and-customizable-7/)󠁿

 [creativis](https://profiles.wordpress.org/creativis/) ഫെബ്രുവരി 7, 2019

If you dont need complicated functions and understand some of css, its your plugin.
Love it, thank you.

![](https://secure.gravatar.com/avatar/f5e374911b67f543d0e0fe88346d72056d9885ceb1e17d6ba883ba0caf176355?
s=60&d=retro&r=g)

### 󠀁[Possibly incompatible – seeing 404 instead](https://wordpress.org/support/topic/possibly-incompatible-seeing-404-instead/)󠁿

 [nycynik](https://profiles.wordpress.org/nycynik/) സെപ്റ്റംബർ 6, 2017 1 reply

I installed the plugin, then went to the configuration and was able to configure
the plug-in. Tried not installing the PHP on every page as per instructions, and
only adding the shortcode. That process seemed to work fine, the button appears 
and shows the text print. But when I click it, it tries to visit <domain>/<path/
to/post>/post/print Since /print is not a valid page, I assume this is something
the plugin should fix, but instead it shows 404.

![](https://secure.gravatar.com/avatar/79773657b52f8be86cb2cf6361b06bac140ac96daf85b45eee56a27ea077ef03?
s=60&d=retro&r=g)

### 󠀁[Broken](https://wordpress.org/support/topic/broken-557/)󠁿

 [MarkFinW](https://profiles.wordpress.org/markfinw/) ജൂലൈ 18, 2017

404 instead of printing.

 [ Read all 43 reviews ](https://wordpress.org/support/plugin/wp-print/reviews/)

## Contributors & Developers

“WP-Print” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ Lester Chan ](https://profiles.wordpress.org/gamerz/)

“WP-Print” has been translated into 10 locales. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/wp-print/contributors)
for their contributions.

[Translate “WP-Print” into your language.](https://translate.wordpress.org/projects/wp-plugins/wp-print)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/wp-print/), check out
the [SVN repository](https://plugins.svn.wordpress.org/wp-print/), or subscribe 
to the [development log](https://plugins.trac.wordpress.org/log/wp-print/) by [RSS](https://plugins.trac.wordpress.org/log/wp-print/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

### 3.0.0

 * FIXED: A password-protected post printed its featured image. The body, the comments
   and the comment count were all withheld, but `get_the_post_thumbnail()` makes
   no password check of its own — which is why every classic core theme makes the
   test itself, and this template replaces the theme’s, so nothing was making it
 * FIXED: “Print Images” and “Print Videos” were defeated by a newline. The patterns
   had no `s` modifier, so an `<img>` tag written across two lines, or an `<iframe
   >` with its closing tag on the next line — the ordinary shape of a hand-written
   or pretty-printed embed — survived being switched off, and the reader’s browser
   fetched it anyway. A bare `<embed>` was never stripped at all, because a closing
   tag was required and it is a void element. An `<img>` carrying only a `srcset`
   is now stripped too
 * BREAKING: Requires WordPress 6.8 and PHP 8.2, up from 6.0 and 7.4.
 * BREAKING: The settings move from the `print_options` row to `wp_print_options`,
   and `print_db_version` is replaced by `wp_print_version`. Existing settings are
   migrated automatically on the first admin page load after upgrading.
 * BREAKING: The `Print_Admin`, `Print_Content`, `Print_Core`, `Print_Link`, `Print_Options`
   and `Print_Template` classes are renamed `WP_Print_Admin`, `WP_Print_Content`,`
   WP_Print`, `WP_Print_Link`, `WP_Print_Options` and `WP_Print_Template`.
 * BREAKING: The Print Icon setting and the two bundled GIFs are gone, replaced 
   by one inline SVG. A custom link template using `%PRINT_ICON_URL%` is rewritten
   to `%PRINT_ICON%` automatically.
 * BREAKING: Print Text Link For Post, Print Text Link For Page and Print Text Link
   Style are gone. The print link is one HTML template with a new `%POST_TYPE%` 
   placeholder, and existing settings are converted into it automatically. `%PRINT_TEXT%`
   is retired, and the first two arguments to `print_link()` no longer do anything.
 * BREAKING: `print-css-rtl.css` is deleted. The one stylesheet now serves both 
   text directions.
 * BREAKING: A theme’s copy of `print-posts.php` needs `class="wp-print"` on its`
   <body>` tag to pick up the new stylesheet.
 * NEW: The print icon is an inline SVG that inherits your theme’s link colour and
   stays sharp on any screen.
 * NEW: The printable page has a dark mode for reading it before printing, and prints
   as ink on white either way.
 * NEW: The stylesheet is tunable through CSS custom properties rather than by forking
   it.
 * NEW: `wp_print_capability` filters the capability the settings screen requires;`
   wp_print_allowed_html` filters the tags the printed document may carry.
 * NEW: Rewritten as classes under `includes/`, following the Plugin Handbook’s 
   folder structure.
 * NEW: The settings screen is two tabs, Settings and Templates, over the same option
   row.
 * NEW: The options screen now uses the WordPress Settings API. Its address changes
   from `options-general.php?page=wp-print/print-options.php` to `options-general.
   php?page=wp-print` — the Settings -> Print menu item is unaffected, and there
   is now a Settings link on the Plugins screen. Update any bookmark.
 * NEW: No more jQuery. The settings screen and the print view use plain JavaScript,
   and every inline `onclick` attribute is gone.
 * NEW: Print options are stored unslashed. An existing install is migrated once,
   automatically, on the first admin page load after upgrading.
 * CHANGED: The printed document is filtered through `wp_kses()` on its way out,
   keeping every tag a post body plausibly contains plus the ones embeds arrive 
   in, and the field of the password form on a protected post. `wp_print_allowed_html`
   covers anything it misses.
 * CHANGED: The print link is filtered through the plugin’s allow-list wherever 
   it is emitted — the `[print_link]` shortcode as well as the `print_link()` template
   tag. A link template carrying a tag outside that list, or an inline event handler,
   loses it.
 * CHANGED: The print view no longer fetches a webfont from fonts.googleapis.com
   when the site is right-to-left.
 * CHANGED: The third argument to `print_link()` is named `$display`, matching the
   other template tags. Only a caller passing it by name is affected.
 * FIXED: A password-protected post printed its comments to anyone who visited its`/
   print/` URL. The body was withheld and the comment count said Comments Hidden,
   and the thread printed in full underneath both.
 * FIXED: Numbered and bulleted lists in a post kept their indentation but lost 
   their markers on the printed page.
 * FIXED: Print options set before a key existed no longer produce “Undefined array
   key” warnings or a print link with no text and no icon.
 * FIXED: The first link in a post was left unnumbered on themes that turn `wpautop`
   off.
 * FIXED: The category list separator lost its space, and `print_categories( $before,
   $after )` wrapped the whole list instead of each category.
 * FIXED: The print view emitted `lang=""` for locales without a region, such as`
   ca`.
 * FIXED: Right-to-left detection in the comments template never triggered, and 
   the print view raised a deprecation notice on every load.
 * FIXED: Link URLs taken from post content are escaped when written back into the
   printable page.
 * FIXED: An icon-only print link had no accessible name; it now carries one.
 * FIXED: Uninstalling on a multisite network larger than 100 sites left the options
   behind on every site past the hundredth, and would fail outright on WordPress
   5.1 or newer.
 * NOTE: The `remove_image()`, `remove_video()` and `str_replace_one()` global functions
   are gone. They were undocumented and used names other plugins could collide with.
 * NOTE: Support for the Polyglot plugin is removed. It has not been available for
   over a decade.
 * NOTE: Every documented template tag — `print_link()`, `print_content()`, `print_categories()`,`
   print_comments_content()`, `print_comments_number()`, `print_links()`, `print_can()`—
   keeps its name, arguments and behaviour, and `[print_link]` and `[donotprint]`
   are unchanged. So is the `/print/` URL of every printable page.
 * NOTE: The comment attributions were assembled from separate translated words —“
   By”, the author, “On”, the date — and the thread heading from the comment count,“
   To”, and the title in ASCII quotes. Each is now one string with numbered placeholders,
   so a translation decides the word order and the quotation marks. Those msgids
   changed, so existing translations of them fall back to English until they are
   retranslated

## Meta

 *  Version **3.0.0**
 *  Last updated **16 മണിക്കൂറുകൾ ago**
 *  Active installations **8,000+**
 *  വേർഡ്പ്രസ്സ് പതിപ്പ് ** 6.8 അല്ലെങ്കില്‍ അതിലും ഉയര്‍ന്നത് **
 *  Tested up to **7.0.3**
 *  PHP പതിപ്പ് ** 8.2 അല്ലെങ്കില്‍ അതിലും ഉയര്‍ന്നത് **
 *  Languages
 * [Czech](https://cs.wordpress.org/plugins/wp-print/), [Dutch](https://nl.wordpress.org/plugins/wp-print/),
   [English (UK)](https://en-gb.wordpress.org/plugins/wp-print/), [English (US)](https://wordpress.org/plugins/wp-print/),
   [French (France)](https://fr.wordpress.org/plugins/wp-print/), [German](https://de.wordpress.org/plugins/wp-print/),
   [Greek](https://el.wordpress.org/plugins/wp-print/), [Hungarian](https://hu.wordpress.org/plugins/wp-print/),
   [Russian](https://ru.wordpress.org/plugins/wp-print/), [Spanish (Chile)](https://cl.wordpress.org/plugins/wp-print/),
   ഉം [Swedish](https://sv.wordpress.org/plugins/wp-print/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/wp-print)
 * Tags
 * [print](https://ml.wordpress.org/plugins/tags/print/)[print button](https://ml.wordpress.org/plugins/tags/print-button/)
   [printable](https://ml.wordpress.org/plugins/tags/printable/)[printer](https://ml.wordpress.org/plugins/tags/printer/)
 *  [Advanced View](https://ml.wordpress.org/plugins/wp-print/advanced/)

## Ratings

 5ൽ 4.4 നക്ഷത്രങ്ങൾ.

 *  [  31 5-star reviews     ](https://wordpress.org/support/plugin/wp-print/reviews/?filter=5)
 *  [  4 4-star reviews     ](https://wordpress.org/support/plugin/wp-print/reviews/?filter=4)
 *  [  1 3-star review     ](https://wordpress.org/support/plugin/wp-print/reviews/?filter=3)
 *  [  1 2-star review     ](https://wordpress.org/support/plugin/wp-print/reviews/?filter=2)
 *  [  4 1-star reviews     ](https://wordpress.org/support/plugin/wp-print/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/wp-print/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/wp-print/reviews/)

## Contributors

 *   [ Lester Chan ](https://profiles.wordpress.org/gamerz/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/wp-print/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://lesterchan.net/site/donation/)