• ベストアンサー
  • すぐに回答を!

PHPファイルをincludeしてHTML表示する

  • 質問No.6784513
  • 閲覧数2197
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 26% (55/210)

お世話になります。
PHP含めプログラム初心者の者です。
どうか知恵をお貸しください。

現在制作しているHTMLサイトがあります。レイアウトはCSSです。
そのうちのひとつのコンテンツのブログページをサイト内WordPressで更新できるようにしたいと考えています。本来なら全てのページをWordPress化したほうがいいのでしょうが、新たにまたいろいろ記述する時間がないもので、とりあえずはblog.htmlなページのコンテンツ表示領域にWordPressで作ったindex.phpが表示されたらいいなと考えております。
ネットでいろいろ調べた結果、「phpファイルをincludeする」という方法によって、それをhtmlファイルで表示する方法があるようです。そこで質問なのですが、具体的にどのようにソースを記述すればそれは可能になるのでしょうか。
(1).htaccessに「AddType application/x-httpd-php .html」と記述する。
(2)表示したいHTML部分に「include(dirname(__FILE__).'/index.php');」と記述する。
とありましたがそれだけではできませんでした。具体的にそうしればいいか教えていただけないでしょうか。(htmlの拡張子をshtmlにするとかいう情報もありましたが定かではありません。)PHPに関しては本当に初心者な者で、変な質問をしているかもしれませんがどうかよろしくお願い致します。

※参考にした情報ソースは下記です。
http://www.yusk.org/memo/php-memo/php_include_001.html
※HTMLソースは下記です。
<body>
<div id="header">
~略~
</div>
<div id="contens">
<div id="leftmenu">
~略~
</div>

<div id="rightmenu">
<div id="rightbox-inside">
<div id="rightbox-inside-txt">
<p class="title">BLOG</p>
<p class="standard">
include(dirname(__FILE__).'/index.php');(←ここにブログを表示させたい)
</p>
</div>
<div style="clear:both;"></div>
<div id="rightbox-buttom">
</div>
</div>
</div>

</div>
<div id="footer">
~略~
</div>

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 100% (1/1)

ご参考になられた情報ソース元を書いた者です。当質問を偶然見つけたもので、ご回答に参加させていただきますm(_ _)m

1minnさんがご回答している通り、html内でphpを「認識させる」ので、phpを使用する箇所は<?php ○○○ ?>で括る必要があります。
参考にされた記事では、あくまでこの部分が記事の途中経過の説明にすぎないため、括って書いてないです。


> とりあえずはblog.htmlなページのコンテンツ表示領域にWordPressで作ったindex.phpが表示

ちなみにWordPressではindex.php、header.php、footer.phpなどのファイル群でテーマが構成されております。もちろんWordPress自体を動かすプログラムも含め、独自に定義されたファイルや記述ルールがあるため、単純にWordPress用のファイルを別箇所のスタティックなhtmlにそのままincludeしても構文エラーが出ると思います。

また、blog.htmlがどのディレクトリにあるのか解りませんが、
<?php include(dirname(__FILE__).'/index.php'); ?>
の記述だと、ルートディレクトリのindex.phpを読み込むようになっていますが、WordPressの場合のTOPページはテーマフォルダ内のindex.phpになるのでパスの記述にも注意が必要かと思われます。

なのでどうしてもWordPress内のindex.phpを読み込みたい場合には、「blogページ」用のテンプレートをindex.phpを読み込むように作成し、WordPress内のページ機能でblogというページを作ってそのテンプレートを適用させるか、無理矢理別のhtmlから読み込ませて表示するにはiframeもしくはサーバが返したソースを読み込むJavascriptでのincludeの手段になると思います。

根本的な解決になってないかもしれません。。。すいません。
補足コメント
toonie

お礼率 26% (55/210)

ブログ作成者様自らの回答ありがとうございます。返信に本当に時間がかかって申し訳ありませんでした。いただいた回答を参考に、知り合いのプログラマーさんの力を借りて、あーでもないこーでもないと試行錯誤しておりました。

さて、現状を報告させていただくと、/wp/index.php内にて、wp-blog-header.phpという部品が、wordpressで編集したブログを既存のHTML画面に埋め込ませることに成功しました。以下の各ファイルのコードです。

ーーー/wp/index.phpコードーーー
<?php
/**
* Front to the WordPress application. This file doesn't do anything, but loads
* wp-blog-header.php which does and tells WordPress to load the theme.
*
* @package WordPress
*/

/**
* Tells WordPress to load the WordPress theme and output it.
*
* @var bool
*/
ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_WARNING);
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');
?>


ーーーwp-blog-header.phpコードーーー
<?php
/**
* Loads the WordPress environment and template.
*
* @package WordPress
*/

if ( !isset($wp_did_header) ) {

$wp_did_header = true;

require_once( dirname(__FILE__) . '/wp-load.php' );

wp();

require_once( ABSPATH . WPINC . '/template-loader.php' );

}

?>

ーーー/wp/index.htmlコードーーー
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja-JP">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>タイトル</title>
<META NAME="description" CONTENT="省略">
<META NAME="keywords" CONTENT="省略">
<META http-equiv="Content-Script-Type" content="text/javascript">
<META http-equiv="Content-Style-Type" content="text/css">
<META name="robots" content="all">
<link rel="shortcut icon" href="/images/favicon.ico"/>
<link rel="icon" href="/images/favicon.ico"/>
<link href="/css/main.css" rel="stylesheet" type="text/css">
<link href="/css/other.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/JavaScript"></script>
<style type="text/css">
</style>
</head>
<body>
<div id="header">
~省略~
</div>
<div id="contens">
<div id="leftmenu">
~省略~
</div>

<div id="rightmenu">
<p class="standard-title"><img src="/images/yajirusi-big.gif">ブログタイトル</p>
<div class="blog"><?php require_once(dirname(__FILE__).'/index.php'); ?></div>
</div>
</div>
~省略~
</div>

<div id="footer">
~省略~
</div>
</body>
</html>

ーーーーーーーーーーーーーーー
これからWordPress内でCSSでレイアウト調整をすることになりますが、ひとまずこの質問内容は完了したと言えるかもしれません。本当にありがとうございます。
ひとつだけ解決できていない問題があるのですが、実は私が作ったhtmlファイル(/wp/index.html)はShift-JISで、
WordPressが吐き出してるブログ(/wp/index.php)はUTF-8で文字コードが違うので、ブログ部分のみ文字化けが起こります。それで上記のように/wp/index.htmlの<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">と変更したのですが、「テキストコーディングエラー」とポップアップが起こりました。「設定したテキストエンコーディングで保存済みですが、テキスト中のcharset設定と一致していないので、ブラウザ等で表示すると文字化けする可能性があります」とのことです。結果、ブログ部分がちゃんと表示され、HTMLで作成した部分は文字化けするようになりました。これはPHPの問題ではないかもしれませんが、原因がどうにも分かりません。もしかしたら初歩的な質問をしているかもしれませんが、よければ教えていただけないでしょうか。
投稿日時:2011/06/21 11:53

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 45% (20/44)

(1).htaccessに「AddType application/x-httpd-php .html」に関して
これは、*.htmlをphpとして扱うと言うことです。

レンタルサーバーによってはこれを許可していないところもあります。
(私が使用しているさくらインターネットでは許可していません)
このあたりの確認はどうでしょうか?
お礼コメント
toonie

お礼率 26% (55/210)

返信は大変遅くなり申し訳ありませんでした。いただいた回答を参考に、あーでもないこーでもないと試行錯誤しておりました。私が使用しているサーバーはロリポップです。調べたところによると、ロリポップの場合、「AddType application/x-httpd-php .html」でなく、
「AddHandler php5.2-script .html」と記載するようです。知り合いのプログラマーさんが教えてくれました。
ありがとうございます。
投稿日時:2011/06/21 11:34
  • 回答No.1

ベストアンサー率 57% (52/90)

wordpressは使った事はないのですが・・・

とりあえず上記のソースはHTMLですよね?
なので
include(dirname(__FILE__).'/index.php');(←ここにブログを表示させたい)

って書いてもただそのまま表示されるだけですよね?だってHTMLだから。
HTMLをPHPとしても認識させるってのが(1)になるので
単純にPHPが動いてる環境であれば、
<p class="standard">
<?php include(dirname(__FILE__).'/index.php'); ?>
</p>

って感じで動きませんか?
補足コメント
toonie

お礼率 26% (55/210)

返信に本当に時間がかかって申し訳ありませんでした。いただいた回答を参考に、知り合いのプログラマーさんの力を借りて、あーでもないこーでもないと試行錯誤しておりました。

さて、現状を報告させていただくと、/wp/index.php内にて、wp-blog-header.phpという部品が、wordpressで編集したブログを既存のHTML画面に埋め込ませることに成功しました。以下の各ファイルのコードです。

ーーー/wp/index.phpコードーーー
<?php
/**
* Front to the WordPress application. This file doesn't do anything, but loads
* wp-blog-header.php which does and tells WordPress to load the theme.
*
* @package WordPress
*/

/**
* Tells WordPress to load the WordPress theme and output it.
*
* @var bool
*/
ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_WARNING);
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');
?>


ーーーwp-blog-header.phpコードーーー
<?php
/**
* Loads the WordPress environment and template.
*
* @package WordPress
*/

if ( !isset($wp_did_header) ) {

$wp_did_header = true;

require_once( dirname(__FILE__) . '/wp-load.php' );

wp();

require_once( ABSPATH . WPINC . '/template-loader.php' );

}

?>

ーーー/wp/index.htmlコードーーー
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja-JP">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>タイトル</title>
<META NAME="description" CONTENT="省略">
<META NAME="keywords" CONTENT="省略">
<META http-equiv="Content-Script-Type" content="text/javascript">
<META http-equiv="Content-Style-Type" content="text/css">
<META name="robots" content="all">
<link rel="shortcut icon" href="/images/favicon.ico"/>
<link rel="icon" href="/images/favicon.ico"/>
<link href="/css/main.css" rel="stylesheet" type="text/css">
<link href="/css/other.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/JavaScript"></script>
<style type="text/css">
</style>
</head>
<body>
<div id="header">
~省略~
</div>
<div id="contens">
<div id="leftmenu">
~省略~
</div>

<div id="rightmenu">
<p class="standard-title"><img src="/images/yajirusi-big.gif">ブログタイトル</p>
<div class="blog"><?php require_once(dirname(__FILE__).'/index.php'); ?></div>
</div>
</div>
~省略~
</div>

<div id="footer">
~省略~
</div>
</body>
</html>

ーーーーーーーーーーーーーーー
これからWordPress内でCSSでレイアウト調整をすることになりますが、ひとまずこの質問内容は完了したと言えるかもしれません。本当にありがとうございます。
ひとつだけ解決できていない問題があるのですが、実は私が作ったhtmlファイル(/wp/index.html)はShift-JISで、
WordPressが吐き出してるブログ(/wp/index.php)はUTF-8で文字コードが違うので、ブログ部分のみ文字化けが起こります。それで上記のように/wp/index.htmlの<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">と変更したのですが、「テキストコーディングエラー」とポップアップが起こりました。「設定したテキストエンコーディングで保存済みですが、テキスト中のcharset設定と一致していないので、ブラウザ等で表示すると文字化けする可能性があります」とのことです。結果、ブログ部分がちゃんと表示され、HTMLで作成した部分は文字化けするようになりました。これはPHPの問題ではないかもしれませんが、原因がどうにも分かりません。もしかしたら初歩的な質問をしているかもしれませんが、よければ教えていただけないでしょうか。
投稿日時:2011/06/21 11:54
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ