【WordPress】サイトのページをブラウザ機能でPDF化する
気が付いたら「業務的にWordpressを使うには?」という投稿が多くなってきているような当ブログです。
自分の備忘録的に書いているところもあるので、お付き合い頂ければと思います。
前回の記事では、クエリで指定した投稿に保存されたカスタムフィールドの値をループで呼び出して、集計する。ということを書きました。
文章にした途端に難しく感じますが笑
なんでそんな事をしたかというと、その先に「印刷」という手順があったので。
ページ上で表を作る必要があったのです。今はPDF化できる方が良いですね。
表の内容自体は前回の記事の内容を活かせば自動で作成できるので、HTML/CSSで見た目を整えれば、そのまま何かしらの帳票として使うことができます。
ここら辺のモノとして有名なのは、TCPDFとFPDIを組み合わせた方法のようですね。
ですが、帳票の内容が投稿数によって変動するので、決め打ちはやりにくいです。
と言うよりも、機能的には簡易的なものを想定していたので、ちょっと重たいというのもあります(作業内容的に)。
よくよく考えてみると、ブラウザから印刷でPDF保存できたなと。
簡易的なものであれば、それを利用すれば十分だと思います。
JSファイルを用意する
ブラウザで表示されているものに対して、印刷というアクションを起こすので。
javascriptを利用します。
ざっくりと、HTMLでボタンを用意して押されたら印刷ダイアログが開く、という動作です。
WordPressには標準でJQueryが搭載されているので、そちらを利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 | jQuery( function(){ //非表示要素 var hide_elm = jQuery( '.site-header, .entry-header, .entry-title, .site-footer, .site-info, .sidebar, .back-info, :input' ); //ボタンクリック jQuery( ":button" ).click( function(){ //非表示 hide_elm.addClass( 'print' ); //印刷 window.print(); //元に戻す hide_elm.removeClass( 'print' ); }); }) |
画面の印刷と考えた場合、WEBページでは必要だけど印刷するのには不要な要素がいくつかあります。
たとえば、ヘッダーやフッター、パンくずリストなどもそうでしょうか。
まずは非表示する要素を指定します。
そして、ボタンを押された時に、指定した要素を非表示にした状態で、window.print()で印刷ダイアログを開く。
という内容となっています。
CSSファイルを用意する
1 2 3 4 5 | @media print{ .print{ display: none; } } |
PDF化する画面のデザインを調整するのにCSSを利用します。
印刷するサイズに合わせてフォントサイズを変更したい場合もあるので、別のCSSを用意しておきます。
ちなみに、こちらでもdisplay:noneを使って非表示の設定は可能です。
非表示についてはJSに任せてしまっているので、後で調整するために用意だけしました。
@media printで内容を定義していきます。
作成したファイルを読み込む
作成したJSファイルとCSSファイルをワードプレスで読み込めるようにすれば、ブラウザの印刷ダイアログを使用したPDF化ができるようになります。
テンプレートファイルに<link>で直接読み込んでも良いですが、推奨されているfunctions.phpでの読み込みを行います。
1 2 3 4 5 6 7 8 9 10 | <?php //帳票印刷用のjsとcssの読み込み add_action( 'wp_enqueue_scripts', 'print_template_styles' ); function print_template_styles(){ if( is_page_template( 'page-slipchanger.php' ) ){ wp_enqueue_style( 'print-style', get_stylesheet_directory_uri() . '/CSS/print.css', array(), false, 'print' ); wp_enqueue_script( 'print-js', get_stylesheet_directory_uri() . '/JS/print.js', array( 'jquery' ) ); } ?> } |
子テーマの作成時にも行った方法です。
ただ、その時と違って入力しているパラメータが増えてます。
まずは、CSSファイルを読み込むwp_enqueue_style()の第5引数でprintを指定しています。これでHTML上に呼び出された場合、メディアクエリがprintと指定されます。
CSSファイル内で指定しているので、不要といえば不要なんですが。
JSファイルの読み込みを行うwp_enqueue_script()では、JQueryを使用するので第3引数で指定します。
これにより、このJSファイルの読み込み順がJQueryが読み込まれた後となるので、JQueryの機能を使うことができます。
まとめ
印刷すること自体はだいぶ減ってきましたが。
PDF化の需要はあるかなと思います。
サービスによっては導入を考えてみるのも良いかもですね。
WordPress初心者~中級者の方にオススメの本!
初心者と言ってもある程度WordPressでブログなどを作成した方にオススメです。
基本的なことから、「あれ何だっけ?」と忘れがちな事が良くまとめられています。
コードとプラグインの利用を平行させたWordPressの制作をする際に横に置いておきたい本です。
前の記事
【WordPress】カスタムフィールドに登録した違う投稿の数値を集計する
次の記事
【WordPress】ContactFrom7のドロップダウンリストを投稿のタイトル名にする
こちらも読まれています
お問い合せ
この記事の内容や当社についてのお問い合わせはこちらのフォームをご覧下さい。
ご利用前に当社のプライバシーポリシーと免責事項をお読み下さい。
送信ボタンを押された時点で、当社プライバシーポリシー又は、免責事項にご同意頂いたものとみなします。