【固定ページ以外も読込可!】WP Plugin : Improved Include Page : 本文に他の記事を読み込むプラグイン

この記事を読むのに必要な時間は約 6 分です。

WordPress で投稿する際の本文に他の記事を読み込むプラグイン Improved Include Page の使い方を紹介します。通常は公開済み、かつ、固定ページしか読み込めないところですが、オプションを指定することで、非公開の投稿も読み込むことができました。

※ ただし、一部他のプラグインが意図した通りに動作しなくなるものがあります。

 

どういう場合に役立つか

お約束の文章や、特定の記事リンク一覧などを毎回記載するのは大変です。ましてや、メンテナンスが必要な場合には、各記事をそれぞれ編集するのは大変な手間です。

そんな問題を解決してくれちゃうプラグインが、 Improved Include Page というプラグインです。
これを使うと、他の記事を本文に読み込めるため、よく利用する内容を独立した記事にしておいて、それを読み込むようにすれば、1箇所メンテナンスするだけで、それを読み込む他の記事にも反映されるので、非常に便利です。

※ もし更新しない内容であれば、 AddQuickTag というプラグイン等を使って、入力補助を追加する方が良いかと思います。他プラグインへの影響等もなさそうです。

通常の使い方

プラグインのインストールの仕方は割愛します。不明な場合はググって下さい。

プラグインインストール後、記事投稿時に shortcode として、記事に以下のように入力します。

[ include-page id=”xxx” title=”true” titleBefore=”<h2>” titleAfter=”</h2>” displayStyle=”DT_FULL_CONTENT” ]

※ [ や ] の前後のスペースは削除して使って下さい。

しかし、これだと以下の他記事しか読み込めません。

  • 記事種類:固定ページ
  • 状態:公開済み

このままですと、お決まりのお約束の専用ページだらけになってしまい、何とも間抜けなサイトが出来上がってしまいます。

 

非公開投稿などを読み込むオプション

以下のようなオプションを加えることで、他の非公開投稿を読み込むことも可能となります。

[ include-page id=”xxx” title=”true” titleBefore=”<h2>” titleAfter=”</h2>” displayStyle=”DT_FULL_CONTENT” allowType=”post,page” allowStatus=”private,publish” ]

※ [ や ] の前後のスペースは削除して使って下さい。

追加したオプションは以下の通りです。

  • allowType : 読み込む記事の種類をカンマ区切りで指定する。
    • 投稿 : post
    • 固定ページ : static (default)
    • 添付ファイル : attachment
  • allowStatus : 読み込む記事のステータスをカンマ区切りで指定する。
    • 非公開 : private
    • 公開 : publish (default)
    • 承認待ち : pending
    • 下書き : draft

指定する値は、WordPress のドキュメントを参考にしています。(post_type と post_status の値)

 

注意点

一覧ページでは動作しない

一覧ページでは、当プラグインは動作しないようです。毎回読み込むような内容なら、一覧では表示されていなくても問題ないかも知れませんが、ご注意下さい。

他のプラグインへの影響あり

このプラグインの注意点として、利用した際に他のプラグインが意図した動作にならないものがあります。1つの記事を読み込む際に、さらに別な記事を読み込むので、ループを避けるとかそういったための動作もあるかも知れません。

今後それぞれのアップデートで変わるかも知れませんが、私が確認したのは以下のものです。

  • WP Social Bookmarking Light
    各記事の Top に表示するようにしていたところ、読み込んだ記事にも表示されてしまいます。
  • TOC+
    読み込みを行った投稿では、目次が生成されません。サイドバーの表示は動作するようです。

いずれも、include を行っていない記事では影響ありません。

正直、TOC+ が動かないのは少々痛手ですが、それ以上に便利なので已む無しかな、というところです。いつか解消することを祈っております…。

静的ファイル出力している場合、再構築等が必要

wordpress でやっている人がいるのか分からないですが、表示スピード向上のためにも html 化している場合は、読み込んでいる記事を更新した場合には、再構築などしないと反映されないはずですので、ご注意下さい。

その他

同一内容が重複する等や、中のコードがどうだとかで、SEO 的にどうだとかがあるかも知れませんが、知識不足につき影響は分かっておりません。気にされる方はご注意下さい。

 


今回は以上です。 


 

2件のコメント

  1. とても役に立つ情報ありがとうございます!
    ですがちょっと困っていることがあって、ご相談にのっていただけないでしょうか?

    トップページの中で用いたくて、テーマに

    と記述したところ、固定ページのタイトル(h2)と本文は問題なく表示できたのですが、非公開にすると表示できなくなってしまいました。
    allowStatusをprivateだけにしてみても同じ結果でした。
    できたら非公開の状態で読み込ませたいのですが、何が問題なのかアドバイスいただけないでしょうか?

    1. 忍月さん

      閲覧・コメントありがとうございます。

      残念ながら、おそらく記載いただいた、テーマへの記述内容が、コメント内のタグ入力制限で見えなくなってしまったようです…。
      お手数おかけして大変恐縮ですが、タグ関連を全角文字に変換するなどして、再度ご記入いただけると、具体的にアドバイス可能かと思われます…。
      出来れば、(1) 公開状態で表示できた際のコード と、(2) 非公開で表示されなくなった際のコード とを提示いただけると助かります。
      思い出せない、面倒であれば、(2) のみで構いません。

      非公開にする前は表示できていたそうですので、基本的なポイントはご理解されているかと思います。
      引っかかりそうな箇所としては、パラメーターの指定方法かと思われます。URLクエリ形式で記述することと、クォテーションの付け方辺りかなーと思います。

      一応、私の方で試してみたところ、テーマファイルに、以下の記述で非公開での固定ページの読込が可能でした。
      ※ 最初と最後の「<?」「?>」は実際には半角での入力です。

      1. titleBefore / titleAfter 指定無しの場合

      <?php echo iinclude_page(434,"displayTitle=true&allowType=post,page,static&allowStatus=publish,private,draft"); ?>

      2. titleBefore / titleAfter を指定する場合

      <?php
      $before = '<h2 class="hoge-class">';
      $after = '</h2>';
      echo iinclude_page(434,"displayTitle=true&allowType=post,page,static&allowStatus=publish,private,draft&titleBefore=$before&titleAfter=$after");
      ?>

      ※ クォテーションがややこしいので、一旦変数に格納してから、パラメーターに渡す際に展開してくれるようにしているつもりです。

      既にご存知であれば、以下は読み飛ばして下さい。

      • テーマファイル内では基本的にはショートコードは動作しないため、直接 iinclude_page 関数を呼ぶ
      • iinclude_page 関数へのパラメーターは、parse_str() で処理するため、URLクエリ形式(&文字区切り)で記述する
      • allowStatus や allowType 等のパラメーターは、explode(“,” … ) で処理されるため、「,」区切りで記述する

コメントする

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