サポート » 使い方全般 » 固定ページにテーマテンプレートで作ったphpファイルをincludeさせたい

  • 解決済 okachan0810

    (@okachan0810)


    固定ページにテーマテンプレートで作ったphpファイルをincludeさせたいです。
    例えばwp-content/themes/テーマ名/inc/内のtest.phpを固定ページで作ったページ内にphp includeをさせようと以下の記述を試しました。

    ①<?php include(“/サーバーのフルパス/inc/test.php”); ?>
    ⇒ダメでした。

    ②<?php include(“http:~/test.php”); ?> 絶対パスで指定
    ⇒ダメでした。

    ③<?php
    $res = file_get_contents(“http://~/inc/test.php”);
    print $res;
    ?>
    ⇒ダメでした。

    function.phpにコードを記述しショートコードで読み込ませる方法もあるみたいですが、
    phpの理解が深いわけではないのでfunction.phpはあまり触りたくないです。

    やりたい事としてはテーマの編集からあちこちの固定ページにインクルードさせているphpファイルの編集ができ、そのphpを固定ページ内で呼びたい時は
    <?php include(“/サーバーのフルパス/inc/test.php”); ?>を書いてあげれば呼び出される
    ことをやりたいです。

    もし何か良い方法があればご教示頂けると大変ありがたいです。

    ご確認のほどよろしくお願いいたします。

14件の返信を表示中 - 1 - 14件目 (全14件中)
  • モデレーター jim912

    (@jim912)

    ①の方法でインクルードできるはずです。出来なかったのであれば、パスが間違っているか、パーミッションの問題であると考えられます。

    ただし、WordPressが推奨する方法としては、get_template_part 関数を使う方法です。inc/test.php の場合は、

    <?php get_template_part( 'inc/test' ); ?>

    となります。

    includeよりも、get_template_part 関数が推奨されるのは、子テーマの機能が利用された際、includeでは子テーマ側でもインクルードされるファイルが必要になる可能性があるためです。

    固定ページのページテンプレートとは別の話なんですか

    みなさんありがとうございます。
    自宅に戻り次第早速やってみて結果報告いたします!

    試しました。

    テスト的に inc/test.phpと同じディレクトリにindex.htmlとindex.phpのファイルを置き
    パーミッションも777に変更しどちらにも<?php include(“test.php”); ?>だけを記述し確認しました。
    問題なくインクルードできました。<?php include(“/フルパス/test.php”); ?>でも問題なくインクルードできました。

    しかしやはり固定ページから新規追加したページ内にphp includeやphp get_template_partで同じようにインクルードさせようとしても
    エラーも起きず何も表示されません。。。

    固定ページのURLはhttp://●●.com/テスト/ などスラ止めなのですが、これはhtmlファイルでもphpファイルでも無い為、
    うまく実行できていないのかなと考えたのですが何か解決策はありますでしょうか。

    最初テスト用のindex.htmlでうまくインクルードができていなかった為、phpが動くように
    AddType x-httpd-php .html .htmをhtaccessに書き対応いたしました。
    同じようにhttp://●●.com/テスト/ のような作りのページでも何か一手間加えないとインクルードができないんじゃないかと考えた次第です。

    何か良案があればご教示頂きたいです。

    oisitさん

    新規で追加したり元々ある固定ページ内に<?php include(“/フルパス/test.php”); ?>を記述しテーマの編集から編集できるように置いたtest.phpに書かれている内容をあちこちの固定ページ内で呼び出せるようにしたいです。
    何かいい方法があればご教示頂けますとありがたいです。

    ご確認のほどよろしくお願いいたします。

    >固定ページのURLはhttp://●●.com/テスト/ などスラ止めなのですが、これはhtmlファイルでもphpファイルでも無い為、
    質問ですが、「<?php include("/フルパス/test.php"); ?>」はどこに書かれましたか?
    page.phpファイルでしょうか?
    wordpressの投稿画面内でしょうか?

    ワードプレス左メニュー内の固定ページから新規追加したページに
    <?php include(“/フルパス/test.php”); ?>を書きました。

    wordpressの投稿画面からphpの記述はできないようになっております。
    (できるようにするプラグインもありますが、セキュリティの観点からはお勧めできません)

    テーマディレクトリ内の目的のファイル内に記述するようにしてください。
    すべての固定ページの場合であればpage.php
    テストという固定ページのスラッグをtestとしたのであれば
    page.phpをコピーしてpage-test.phpというファイルを作ればそれが使用されます。

    そうだったんですね。ありがとうございます。
    固定ページから作るページであちこちで読み込ませたいコンテンツがあり、
    設置する位置は各ページバラバラなので1個インクルード用のphpを作ったら楽だろうなーと思い考えてました。プラグインは使わないようにします。
    色々とありがとうございました。

    プラグインを使わず固定・投稿ページにショートコードを書いてPHPファイルをインクルードさせる方法もあるみたいですね。気になったのでこちらも試してみたいと思います。

    【wordpress】投稿・固定ページ内にPHPファイルをインクルード(挿入/実行)させる

    モデレーター jim912

    (@jim912)

    テンプレートからではなく、固定ページ内の本文からインクルードさせたかったのですね。
    ショートコードを用いるのがベストだと考えますが、上記ページで紹介されているコードでは、ディレクトリトラバーサルへの配慮がなされていません。不特定多数の人が入力するような場合でなければ、問題にはなりませんが、常々、セキュリティへの配慮は考えておくべきですね。

    wordpressのcodexの固定ページの説明にあるページテンプレートを使うと、
    固定ページに異なるテンプレートを使うことができる。
    たとえば、page.phpを複製してpage-test.phpに
    Template Name: これはテスト(codexを参照)と名前をつけて、
    <?php get_template_part( 'inc/test' ); ?>
    と追加する。

    新規の固定ページを作った時、あるいは既存の固定ページのページ属性のテンプレートから
    これはテストを選べば、インクルードが追記されているテンプレートが適用される。

    期待通りかはわかりませんが。

    jim912さん
    説明が悪く伝わりずらい点がありすいませんでした。
    今回は私のみが更新するサイトの為ショートコードを使って試してみたところ
    固定ページ内でインクルードをさせることができました。
    本当にありがとうございます!

    oisitさん
    ありがとうございます。やりたい事としては固定ページ内の好きなところ(ページによってコンテンツ上部だったり、下部だったり)でインクルードをさせたかったのでショートコード埋め込みでインクルードをさせてみました。今回ご教示頂いた方法でもインクルードを試してみたいと思います。色々と親切にご回答頂きありがとうございました。

14件の返信を表示中 - 1 - 14件目 (全14件中)
  • トピック「固定ページにテーマテンプレートで作ったphpファイルをincludeさせたい」には新たに返信することはできません。