日本語版がv2.7から更新されていないですね、、、
多分今だと、get_template_partを使うってことになってるんじゃないですかねぇ??
(・・・って、ここに返答していいのかな?)
こんにちは
回答ありがとうございます。
theme checkというプラグインを使って、コードのバリデーションを行っているのですが、
テンプレートでincludeを使った場合、
The theme appears to use include or require. If these are being used to include separate sections of a template from independent files, then get_template_part() should be used instead.
というエラーが出ます。
私自身も、include関数を使わずに、コードを書いてきたのですが、functions.phpが自分が公開しているRaindropsというテーマで3500行を超えてしまったので、ファイルを分割する必要に迫られるようになりました。
この過程で、includeとget_template_partの挙動の違いがあり、includeを使う検討を始めました。
使えるかどうか確認するため、
ワードプレスのテーマレビュアーで有名な(と私は思っているのですが)Chip Bennet氏のテーマを参照し、functions.phpでrequire()が使われていた、(以前は、使われていなかったと思うのですが)
theme checkプラグインでfunctions.phpに書いた、includeがエラーになるかどうか試したが、エラーは出ない
2点を確認し、使うことにしました。
私、英語が不得手なので、冒頭のエラーメッセージの意味合いを正しく把握しておきたいと思っていました(コードの書き方が変わるので、、、)
そこに、日本語コーデックスで、includeが便利な関数として独自に取り上げられていたので、これは正しいのですか?と問えば、なにか答えに近づけるかもと思い質問してしまったのですが、「この質問おかしいな」とも思い、真意を説明させていただきます
よろしくお願いします。
すみません。。。以下、PHP書けない者が推測で書いてしまいます。
(えらいひとの登場に期待しつつ、失礼します)
上掲の英語のエラーメッセージは、
「requireやincludeがあるみたいだけど、get_template_part()を代わりに使った方がいいよ」
という意味ですよね。
WordPress独自のテンプレートタグがあるならそれを使えばいいのでしょうが、
それで実現できない場合は一般的なPHPのお作法にのっとったものを書けば良い、という頭でいます。
なので正しくない、ということはないと思ってます。
エラーメッセージも、「警告」じゃなく「注意」であり、わかっていて使うなら良いのかと思うのですが、どうでしょう?
mypacecreatorさん
すみません。。。以下、PHP書けない者が推測で書いてしまいます。
私のほうこそ、手を煩わせて申し訳ないと思います。
自己紹介ですが、私、PHPも、得意ではありません。だから多分あんなに長いコードで、ワードプレスの公式テーマとして認めてもらうために、40回近いアップロードをして、やっとこさ、公式テーマにしてもらった、超のつくあほです。
それで実現できない場合は一般的なPHPのお作法にのっとったものを書けば良い、という頭でいます。
なので正しくない、ということはないと思ってます。
私は、アホなだけでなく節操がありません。だから、テーマ内のファイルに対してinclude使っていいんだと思うと、とんでもないことをはじめます。
実際に私は、以下のようなコードを書いてテーマの審査に出すほどだったのです
もちろん、ぴしゃりとやられましたけど
<?php
$config_dir = dirname(dirname(dirname(dirname(dirname(__FILE__)))));
if(file_exists($config_dir.'/wp-config.php')){
require_once($config_dir.'/wp-config.php');
}else{
require_once(dirname($config_dir).'/wp-config.php') or die("error");
}
$table = $table_prefix.'options';
$link = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
$sdb = mysql_select_db(DB_NAME,$link);
$sql = 'SELECT * FROM <code>'.$table.'</code> WHERE <code>option_name</code> LIKE \'_raindrops_indv_css\'';
$result = mysql_query($sql, $link);
$rows = mysql_fetch_row($result);
header('Content-type: text/css');
echo $rows[3];
?>
エラーメッセージも、「警告」じゃなく「注意」であり、わかっていて使うなら良いのかと思うのですが、どうでしょう?
ごめんなさい ワードプレスに精通した人達から、考え方を学びたかったのです。
テーマ内のファイルなら、問題ないと思っていますが、上のコードにあるように、コアファイルのパスを想定して、インクルードするようなコードは書くべきではないと思っています。
テーマファイルは、非アクティブでも、ファイルにアクセスができますから、まずいでしょ
という理解なんですが、自分で使うことにして、おかしなことを言いますが、なんで、functions.phpからだったら沈黙するんですかね?(プラグインの問題かもしれないですけど)
こんにちは
書いておいたほうがいいのか少し迷いましたが、、、
functions.phpにPHP require()を記述したテーマファイルは、extend theme レビュアーの審査を通過できたので、使ってもいいみたいでした。(テンプレートからの利用については?)
http://wordpress.org/extend/themes/raindrops
この機会に、get_header()と include()の 挙動の違いを、メモにしましたので、リンクをおいておきます
WordPressのテンプレートインクルードとPHP include
どうもありがとうございました。