WordPress でページの印刷時に出力内容やデザインを変更して印刷できるようにするには?

ブラウザで表示しているページを印刷するときに、ページをそのまま印刷すると余計な空白があったり不要な情報が入っていたりすることがあります。必要な情報だけがコンパクトにまとまっている方がユーザーエクスペリエンス的には好ましいと考えられます。

例えば不動産サイト内で物件の詳細ページを思い浮かべてください。最近のサイトでは外観や内部の写真が多数閲覧できたり、LIFULL HOME’S の場合には THETA 360.biz を利用したパノラマ画像を閲覧できたりします。パノラマ画像なんかはブラウザ上で閲覧する際にはとても有用な情報ですが、紙媒体に印刷する際には不要な情報となります。

ここでは WordPress でサイト制作する際に、ページ内に印刷ボタンを用意してそれをクリックすると印刷用のページを表示する方法を紹介します。

考え方としては、GET パラメータで閲覧用のページを表示するか印刷用のページを表示するかを切り分ける、ということをします。まずは印刷ボタンを用意します。投稿を表示するためのテンプレート(ここでは single.php とします)のループ内で次のようなボタンを用意します。

<a href="<?php the_permalink(); ?>?format=print">印刷する

href は投稿のページ自体を指していますが、format という GET パラメータが付与されており、print という値が与えられています。このままでは、このリンクをクリックしても投稿ページが表示されるだけです。次は single.php (投稿を表示するためのテンプレート)で次のような条件分岐を用意します。

<?php

if ( 'print' === ( $_GET['format'] ?? '' ) ) {
    get_header();

    /**
     * ここに印刷用の HTML を記述する.
     */

    get_footer();
    return;
}

/**
 * ここから下は通常の表示用の HTML が続く.
 */
get_header();

URLに ?format=print を含む場合、つまり上記の「印刷する」ボタンをクリックした場合のみ if 文の内部が実行され、if 文の最後で return することで、通常の表示用の HTML が出力されることはありません。

get_header 関数や get_footer 関数は引数をとることができ、例えば get_header( 'print' ) とすると header-print.php を読み込むようになります。つまり header.phpfooter.php についても印刷用のものを別途用意して読み込ませることが可能です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です