WordPressにPHPページを追加するにはどうすればよいですか?


263

サイト全体のCSS / theme / designの一部を残したまま、PHPコードを実行するWordPressブログのカスタムページを作成したいと考えています。

PHPコードはサードパーティのAPIを利用します(そのため、他のPHPファイルを含める必要があります)。

どうすればこれを達成できますか?

注:WordPress APIとやり取りする必要は特にありません。他の特定のPHPライブラリを含めることを除いて、WordPressページに含めたいPHPコードに他の依存関係がない必要があります。そのため、WordPress APIの学習を必要としないソリューションが最善のソリューションになることは明らかです。


これらのプラグインを使用できます:wordpress.org/extend/plugins/exec-phpまたはwordpress.org/extend/plugins/php-code-widget役立つことを願っています!
ミカエル・

回答:


400

APIを操作したり、プラグインを使用したりする必要はありません。

まず、複製するpost.phppage.php、テーマフォルダー(下/wp-content/themes/themename/)に入れます。

新しいファイルの名前を変更しますtemplatename.php(ここで、templatenameは新しいテンプレートと呼びたい名前です)。利用可能なテンプレートのリストに新しいテンプレートを追加するには、新しいファイルの上部に次のように入力します。

<?php
/*
Template Name: Name of Template
*/
?>

このファイルを(PHPを使用して)変更し、他のファイルや必要なものを含めることができます。

次に、WordPressブログに新しいページを作成します。ページ編集画面では、右側の[ 属性]ウィジェットに[ テンプレート ]ドロップダウンが表示されます。新しいテンプレートを選択して、ページを公開します。

新しいページは、で定義されたPHPコードを使用します templatename.php

ソース:グローバルに使用するカスタムページテンプレートの作成


20
テンプレートオプションは、コメントを含むファイルを作成するまで使用できませんでした。次に、テンプレートオプションが表示されました。ニース-ショートコードを使用する予定でしたが、これははるかに簡単です。
Dave Hilditch 2013年

1
phpを公開するためのプラグインを使用することの欠点はありますか?
Suhail Gupta 14年

1
ページとは、ブラウザがそれを表示するときのページであり、httpリクエストです-はい。
アダムホプキンソン2015

3
@DamianGreen質問は完全に自動化された方法を要求するものではなく、実際にはWP APIを回避するための好みを示しています
Adam Hopkinson 2017年

4
この答えは、既存のテーマ要素を再利用するのではなく、それらをコピーして貼り付けるためです(段落2)。テーマがサードパーティによって提供されている場合、カスタムテンプレートにカスケードされないテーマの更新を受け取る可能性があります。さらに、サイトのルックアンドフィールの変更が複雑になり、テーマを変更するとカスタムページの再構築が必要になります。プラグインはこれらの2つの理由で良くないでしょうか?私が質問を読んだ方法では、OPは「サードパーティAPIの使用」という
Philip Couling

29

独自の.phpファイルを作成し、404ヘッダーなしでWordPressと対話し、現在のパーマリンク構造を維持したい場合は、その1ページのテンプレートファイルは必要ありません

この方法が最も効果的であることが.phpファイルでわかりました。

<?php
    require_once(dirname(__FILE__) . '/wp-config.php');
    $wp->init();
    $wp->parse_request();
    $wp->query_posts();
    $wp->register_globals();
    $wp->send_headers();

    // Your WordPress functions here...
    echo site_url();
?>

その後、この後にWordPressの機能を実行するだけです。また、これは、.phpファイルがwp-config.phpファイルが配置されているWordPressサイトのルート内にあることを前提としています。

私にとって、これは私が最も長い間使用していた貴重な発見です。WordPressrequire_once(dirname(__FILE__) . '/wp-blog-header.php');WordPressの機能を統合するために使用する必要があるアプローチであるとさえ伝えているため、404ヘッダーが発生します。このアプローチを使用します。WordPressとWebサイトの統合

私は多くの人がこの質問に答えており、すでに受け入れられている答えがあることを知っていますが、WordPressサイトのルート内(または技術的にはサイト内のどこにでも)にある.phpファイルを閲覧することができる素晴らしいアプローチを以下に示します404ヘッダーなしでロードします!


更新:wp-blog-header.php404ヘッダーなしで使用する方法がありますが、これにはヘッダーを手動で追加する必要があります。次のようなものがWordPressインストールのルートで機能します。

<?php
    require_once(dirname(__FILE__) . '/wp-blog-header.php');
    header("HTTP/1.1 200 OK");
    header("Status: 200 All rosy");

    // Your WordPress functions here...
    echo site_url();
?>

このすべてについて更新するだけで、このアプローチに必要なコードは少し少なくなりますが、どちらを使用するかはあなた次第です。


1
それでも404ヘッダーが発生し、Wordpressマルチサイトファイルでも、このページの上部で新しいマルチサイトをアクティブ化wp-activate.phpする$wp_query->is_404 = falseときに設定することにより、404ヘッダーを無効にする必要がありrequire( dirname( __FILE__ ) . '/wp-blog-header.php' );ます。
ソロモンクロッソン2017年

2
問題を再現できない方法がわかりません。再作成は非常に簡単です。Wordpressをインストールするだけで、.phpファイルを作成するのではなくwp-blog-header.phpcodex.wordpress.org / Integrating_WordPress_with_Your_Websiteで定義されているアプローチを使用し、ブラウザーインスペクターツールで404ヘッダーを確認します。
Solomon Closson 2017年

1
この問題についての集中的な調査中に見逃した場合に備えて、この問題を文書化したWebページは次のとおり
Solomon Closson

1
ヘッダーの問題は、WordPressの最新バージョンで発生する問題です。これは、私が最初のコメントで提案したとおりです。「決して失敗しない」のような言葉を慎重に使う。:)
DrewT 2017

1
これは問題に対して非常に不適切なアプローチです。この方法で、WPがブートストラップを変更しない限り機能するソリューションを作成します。あなたはこれがやろうとしていることを(簡単に)達成するために利用可能なフックを活用すべきです。
ローレンスジョンソン

13

私と同じように、CMSに存在しないページでWordPress関数を参照できるようにしたい場合があります。このようにして、バックエンド固有のままであり、クライアントによって誤って削除されることはありません。

wp-blog-header.phpPHPを使用してファイルをインクルードするだけで、これは実際には簡単require()です。

以下は、クエリ文字列を使用してFacebook Open Graphを生成する例です。(OG)データ。

は、OGデータを生成する投稿のIDがhttp://example.com/yourfilename.php?1どこであるかなどのリンクの例を見てみましょう1

内容はyourfilename.php、便宜上、WordPressルートディレクトリにあります。

<?php
    require( dirname( __FILE__ ) . '/wp-blog-header.php' );

    $uri = $_SERVER['REQUEST_URI'];
    $pieces = explode("?", $uri);
    $post_id = intval( $pieces[1] );

    // og:title
    $title = get_the_title($post_id);

    // og:description
    $post = get_post($post_id);
    $descr = $post->post_excerpt;

    // og:image
    $img_data_array = get_attached_media('image', $post_id);
    $img_src = null;
    $img_count = 0;

    foreach ( $img_data_array as $img_data ) {
        if ( $img_count > 0 ) {
            break;
        } else {
            ++$img_count;
            $img_src = $img_data->guid;
        }
    } // end og:image

?>
<!DOCTYPE HTML>
<html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=yes" />
<meta property="og:title" content="<?php echo $title; ?>" />
<meta property="og:description" content="<?php echo $descr; ?>" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<meta property="og:url" content="<?php echo site_url().'/your_redirect_path'.$post_id; ?>" />
<meta property="og:image" content="<?php echo $img_src; ?>" />
<meta property="og:site_name" content="Your Title" />
</html>

投稿の実際の画像、抜粋、タイトルを使用して、投稿の共有モデルを生成しました。

特別なテンプレートを作成し、これを行うためにパーマリンク構造を編集することもできますが、これは1つのページにのみ必要であり、クライアントがCMS内からテンプレートを削除したくないため、これはよりクリーンなオプションのように見えました。


EDIT 2017: このアプローチは廃止されていることに注意してください

2016年以降のWordPressインストールについては、WordPressにPHPページを追加するにどうすればよいですか?をご覧ください。ページデータをブラウザに出力する前に追加のパラメータを含めるため。


9

テンプレートページを作成するのが正解です。そのためには、これをテーマフォルダー内に作成したページに追加します。

<?php
    /*
    Template Name: mytemplate
    */
?>

このコードを実行するには、バックエンドからページのテンプレートとして「mytemplate」を選択する必要があります。

正しい詳細については、このリンクを参照して くださいhttps://developer.wordpress.org/themes/template-files-section/page-template-files/


5

WordPressテーマの外にPHPページを追加する必要がある場合、回答はカバーされませんでした。これが道です。

wp-load.phpを含める必要があります。

<?php require_once('wp-load.php'); ?>

その後、そのページで任意のWordPress関数を使用できます。


このアイデアは私にとって非常に役に立ちました。ただし、正しく使用するためにこの投稿を確認してくださいrequire_once('wp-load.php');
optimiertes

1

my-page.phpという名前のページを作成し、テーマディレクトリに保存します。次に、このphpファイルを編集して、ページの上部に次の行を書き込みます。

<?php /* Template Name: My Page */ ?>

カスタムページ定義行の下にPHPコードを記述します。他のWPテンプレート、このファイル内の関数を呼び出すことができます。

<?php require_once("header.php");?>ORのように開始

レイアウトの一貫性を保つためにヘッダーとフッターをどのように統合するか。

これはマイページなので、WordPress管理パネルからページを作成する必要があります。[管理] => [ページ] => [新規追加]に移動します

ページタイトルを追加します。カスタムページのコーディング方法によっては、ページ本文(説明)も追加する場合があります。カスタムphpページで記述されている場合は、説明を完全にスキップできます。

右側で、[テンプレート]を選択します。ドロップダウンから[マイカスタムページ]を選択します。準備万端です![wordpress] [1]によって作成されたスラッグ(パーマリンク)に移動し、ページを表示します。


1

WordPressでPHPのページを追加するための最良の方法Page Templatechild-themeフォルダ。

Page TemplateWordPressで作成する方法。

という名前のファイルを作成し、template-custom.phpそれをに配置し/wp-content/theme/my-theme/ます。

<?php
 /*
 * Template Name: Custom Template
 * Custom template used for custom php code display
 * @package   Portafolio WordPress Theme
 * @author    Gufran Hasan
 * @copyright Copyright templatecustom.com
 * @link      http://www.templatecustom.com
 */
?>
<?php get_header(); ?>
<?php
  //write code here

 ?>

<?php get_footer(); ?>

詳細については


1

WordPressのプラグインAPIを調べてみてください。

これは、WordPress機構のさまざまな部分に「フック」および「フィルター」する方法を説明しているため、カスタムPHPコードをいつでもどこでも実行できます。このフック、フィルタリング、カスタムコードの作成はすべて、任意のテーマのfunctions.phpファイルで実行できます。ハッピーコーディング:)


私は実際にはWordpress API自体と対話したくありません-私のPHPコードはWP shenanigansから完全に独立しています。しかし、外部のphpファイルを参照する必要があります。この場合、APIは私が学ぶ必要があるものですか?
ラザフォード

それはあなたが何をしようとしているのかに依存します。APIの使用は、場合によっては役立つ場合もあれば、完全に不要な場合もあります。それはすべて、達成しようとしていることに依存しています。@adamの提案に従ってページテンプレートを使用するか、すべてのカスタムコードを1つのバスケットに保持してから、WordPressのさまざまな部分にフック/フィルターすることができます。私はすべてと言って、あなたにとって最善の方法と快適に感じる方法を選択します。これらの3つの答えはすべて、何らかの形であなたが望むものを実現します。
hsatterwhite 2010年

1

WordPress APIを使いたくない場合は、Adamの答えが本当に最高です。

APIを使用する場合は、「template-redirect」フックにフックすることをお勧めします。これにより、WordPressにアクセスしたまま、特定のURLまたはページを任意のPHPファイルにポイントできます。


1

アダムホプキンソンによって広く受け入れられた答えは、ページを作成する完全に自動化された方法ではありません!WordPressのバックエンド(wp-adminダッシュ)にユーザーが手動でページを作成する必要があります。これの問題は、優れたプラグインには完全に自動化されたセットアップが必要であることです。クライアントが手動でページを作成する必要はありません。

また、ここで広く受け入れられている他の回答の一部には、WordPressの外部に静的ページを作成することが含まれ、テーマヘッダーとフッターを実現するWordPress機能の一部のみが含まれています。この方法は機能する場合もありますが、すべての機能が含まれていないと、WordPressとの統合が非常に困難になる可能性があります。

完全に自動化された最良のアプローチは、を使用してページを作成し、wp_insert_postそれをデータベースに常駐させることだと思います。これに関する例と優れた議論、およびユーザーによるページの誤った削除を防ぐ方法については、こちらをご覧ください:wordpress-automatically-creating-page

率直に言って、このアプローチがこの人気のある質問への回答としてまだ言及されていないことに驚いています(7年間投稿されています)。


1
上記の回答を書いた直後、私はユーザーの意図がページのコンテンツにPHPを含めることができることであることに気付きましたが、このアプローチは明らかにそれを許可していません。PHPはコンテンツの生成にのみ使用でき、コンテンツには含まれません。したがって、ページは動的ではなく静的に保存されます。ただし、呼び出されるたびにページとそのコンテンツを(ページIDを提供することによって)再作成することにより、ページに動的な外観を与えることができます。プラグインは、おそらく$ _SERVER ["REQUEST_URI"]を監視することによって、これがいつどのように発生するかを処理します
Damian Green

2
あなたの答えでは、ユーザーによる誤った削除を防ぐことについて話します。どうやってやるの?
GJ


0

カスタムテンプレートファイルを作成してそのテンプレートをページに割り当てる(承認された回答の例のように)以外に、WordPressがテンプレート(テンプレート階層)の読み込みに使用するテンプレート命名規則を使用する方法もあります。

新しいページを作成し、そのページのスラッグをテンプレートファイル名に使用します(page- {slug} .phpという名前のテンプレートファイルを作成します)。WordPressはこのルールに適合するテンプレートを自動的にロードします。


0

page-mytitle.php現在のテーマのフォルダーにファイルを作成し、ダッシュボードから「mytitle」ページを作成するだけです。

次に、URLでページを呼び出すと、page-mytitle.phpが表示されます。このPHPファイルにHTML、CSS、JavaScript、wp-loopなどを追加する必要があります(page-mytitle.php)。


0

(/ wp-content / themes / your_active_theme /)のようなアクティブテーマフォルダーの下に任意のphpファイル を追加できます。その後、wp-adminから新しいページを追加し、ページテンプレートオプションからこのページテンプレートを選択できます。

<?php
/*
 Template Name: Your Template Name
 */
?>

そして、functions.phpにファイルを含め、そこからショートコードを作成し、そのショートコードを次のようにページに配置する方法がもう1つあります。

// CODE in functions.php 

function abc(){
 include_once('your_file_name.php');
}
add_shortcode('abc' , 'abc');

そして、この[abc]のようなwp-adminサイドページでこのショートコードを使用できます 。


-2
<?php /* Template Name: CustomPageT1 */ ?>

<?php get_header(); ?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">
        <?php
        // Start the loop.
        while ( have_posts() ) : the_post();

            // Include the page content template.
            get_template_part( 'template-parts/content', 'page' );

            // If comments are open or we have at least one comment, load up the comment template.
            if ( comments_open() || get_comments_number() ) {
                comments_template();
            }

            // End of the loop.
        endwhile;
        ?>

    </main><!-- .site-main -->

    <?php get_sidebar( 'content-bottom' ); ?>

</div><!-- .content-area -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

-2

ファイルに「newpage.php」という名前を付けることができます-のテーマディレクトリに置きますwp-content。これをページテンプレートにすることができます(http://codex.wordpress.org/Pagesを参照してください。)にするか、header.phpやsingle.phpなどのテーマのPHPファイルの1つに含めることができます。

さらに良いのは、子テーマを作成してそこに配置することで、テーマコードをそのままにしておくと、更新が簡単になります。

http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates


リンクが半分壊れている:リダイレクトが2回行われ、「Creating Your Own Page Templates」というサブセクションがない。最も近いのはサブページページテンプレート」である場合とそうでない場合があります。別のページ(同じ名前)もあります。ページテンプレート
Peter Mortensen

-5

また、PHPページを直接使用して、PHPページを作成し、フルパスで実行することもできます。

のように、http://localhost/path/filename.php


ただし、翻訳機能が動作しないため、何らかの理由で読み込まれません。
ram4nd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.