カスタムテンプレートに外部のPHPファイルを含めることは可能ですか?
私は私のサイトにブログを追加しようとしています。私のサイトにはすでにヘッダー、フッター、サイドバーのレイアウトがあります。カスタムテンプレートでそれらを使用できますか?
<?php
/*
Template Name: Blog
*/
?>
<?php include( PATH . 'http://www.example.com/includes/header.php' ); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>">
<?php the_title(); ?>
</a></h2>
<?php include (TEMPLATEPATH . '/inc/meta.php' ); ?>
<div class="entry">
<?php the_content(); ?>
</div>
<div class="postmetadata">
<?php the_tags('Tags: ', ', ', '<br />'); ?>
Posted in
<?php the_category(', ') ?>
|
<?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?>
</div>
</div>
<?php endwhile; ?>
<div class="mypagination">
<?php include (TEMPLATEPATH . '/inc/nav.php' ); ?>
</div>
<?php else : ?>
<h2>Not Found</h2>
<?php endif; ?>
<?php include( PATH . 'http://www.example.com/includes/sidebar.php' ); ?>
<?php include( PATH . 'http://www.example.com/includes/footer.php' ); ?>
私も試してみました:
<?php include('http://mywebsite.com/includes/header.php'); ?>
いいえ、指定した方法でPHPファイルをテーマに含めることはできません。
その理由を理解するために、私たちがしなければならないのは、いくつかの常識と基本的な批判的思考を行使することです。
include
はこれをすることができませんinclude( 'http://yoursite/wp-config.php' ); echo DB_PASSWORD;
。 Webサイトをハッキングするのがどれほど簡単か想像してみてください。 facebook.com/index.php
を含めて私を止めたいのですが?いいえ、できません。しかし、質問の中のコードをPHPスクリプトに素早くコピーして貼り付けた後、簡単にアクセスすると、ここの誰よりも早くコピーができたことがわかります。
代わりに、サーバーが現在稼働しているローカルファイルシステムのファイルのみを含めることができます。あなたは決してインクルードやrequireステートメントにURLを渡さないでしょう。
だから私がindex.phpに入っていて、sidebar.phpと呼ばれる同じフォルダーにファイルがあるなら、私はこのようにそれを含めるでしょう:
include('sidebar.php');
これが失敗した場合、include
は値を返します。 include文の意味は一般的な基本のPHPであり、このQ&Aサイトでは話題になっていません。
しかし、私はこの質問を未解決のままにしています。WordPress API関数が代わりに使用されるべきであり、それはインクルードよりも優れていて、必要なものに必要です。
テンプレート部分をテーマに含めるには、次のようにします。
get_template_part( 'partname' );
この関数はまた、あなたが指定した部分のために子供や親のテーマの中を見ます。
たとえば、次のコードでは
get_template_part( 'sidebar', 'first' );
最初に見つかったものを探して含めます。
sidebar-first.php
sidebar-first.php
sidebar.php
sidebar.php
テンプレートファイルをインクルードするにはget_template_partのみを使用するようにしてください。ライブラリなどのファイルや、HTMLを出力しない他のPHPファイルをインクルードするために使用しないでください。
先に進む前に、以下の話題について読んでください。
<?php php ?> <?php tag ?> <?php spam ?> <?php and ?> <?php why ?> <?php its ?> <?php bad ?>
get_template_part
WP_HTTP
API、本物の時代のためには、本当にAPIへのリモートリクエストを行う必要があります。 wp_remote_get
やwp_remote_post
のような関数はここで役に立ちます。WP_DEBUG
でwp-config.php
を定義し、そしてデバッグバーやクエリモニタのようなプラグインをインストールしてください。ただし、必ずテンプレートフッターでwp_footer
を呼び出してください。あなたがこのCenarioを持っているとしましょう:
あなたのワードプレスのインストールはあなたのサイトとしての 'www'ルートフォルダでホストされており、あなたのheader.phpは 'www/includes'フォルダにあります。
あなたのワードプレスのテーマでは、単に追加
<。php include( 'includes/header.php'); ?>
WordPressがテーマファイルを読むとき、それはルートパスを使います。
include()
関数に外部リソースを含めることはできません。サーバーの内部パスによる作業を含めます。あなたが望むようにURLを含めることはできません。これはPHPセキュリティ問題です。
あなたが使用することができます:
get_file_contents('http://your.url');
またはCurlライブラリを使用してください。
以下のコアファイルをチェックしたとき、私は関数get_header()
のファイルwp/wp-includes/general-template.php
で見つけたコードです。
次の行が見つかりました
$templates[] = 'header.php';
locate_template( $templates, true );
だから私はこのように私のコード(index.php
)でそれを使用しています
<?php get_header();
$myphpfile[] = 'grid.php';
locate_template( $myphpfile, true );
?>
子供のためのテーマ:
<?php echo get_stylesheet_directory_uri().'/subfoldername/add.php';?>
あなたが使用することができます
For Parent Theme: get_template_directory() or get_template_directory_uri()
For Child Theme: get_stylesheet_directory() or get_stylesheet_directory_uri()