public function paka3_plugin_start()内のIF文で、
おそらくエラーが起きていると思います。
なぜなら
このIF文のelseの時(テーブルが既に存在するとき)はエラーが出てきません
Paka3_DatabaseTable.phpの末尾の?>
を消してみてください。
たいていはそれが原因です。
ご返答ありがとうございます、
消してみましたがエラーが出ます。
テーブルは、エラーが出ていますが、正常に作られています。
それにしても
phpの末尾の?>を消すとは…phpは
<?php ?>の中に書かなくてはいけないものとばかり思っていました。
個人的には
require_once(ABSPATH.’wp-admin\includes\upgrade.php’);
dbDelta($sql);
$this->forest_FirstData();
add_option(“forest_db_version”,$this->forest_db_version);
辺りが怪しいと思っています。
こんにちは
参考にされているサイトの functions.phpのコード
<!--?php
となっていますが、このソースをそのままコピーしているといった事はありませんか?
コメント以外はコピペせずにやっているので
大丈夫だと思います
自分は基本的にGitHubのコード部分を読むようにしています。
参考にしたコードが古すぎます。
if($wpdb->get_var("SHOW TABLES LIKE '$this->table_name'") != $this->table_name)
これは必要ありません。
dbDelta() 関数のすることは以下の通りです。
- 該当のテーブル名が存在しないときは、テーブルを作成する。
- 該当のテーブル名が存在するときは、そのスキーマをチェックする。
- スキーマが同じなら、何もしない。
- スキーマが異なるときには、テーブルの構造を変更する。
テーブル名だけをチェックする上のコードが存在すると、2以下の機能が果たせなくなります。ということは、本来なら、上のコードは誤りなのですが、日本語版 Codex にこのコード例があるので、広まってしまったのでしょう。プラグイン作者たちもよく間違えているので、たぶん、英語版 Codex が誤った記述をしていて、日本語版 Codex は、それを引き継いだままなのだと思います。現在の英語版 Codex では修正されています。
しかし、Warning が発生するのは、上のコードではなくて、次の2行です。
$title = $wpdb->escape("初めての投稿です");
$contents = $wpdb->escape("インストールが完了しました");
この wpdb::escape() は、deprecated なので、使ってはいけません。互換性のために残されているだけです。適切なエスケープも期待できません (攻撃を阻止できません)。wpdb::insert() 内部で wpdb::prepare() が呼ばれるので、エスケープ処理は WordPress に任せてください。
kjmtsh様 ありがとうございます。
$title='初めての投稿です5';
$contents='インストールが完了しました.5';
と書き換えたらエラーが出てこなあくなり、テーブルもちゃんと作られていました。
まさかCodexに書き損じがあるとは思ってもみませんでした。
Codexを超えている人に初めて会いました(笑)
勉強になります。
また、if($wpdb->get_var…はコメントにしていると、
テーブルが既にある状態でプラグインを有効にするとまたエラーが出てきたので、
今回は残すことにしました。
皆様此度のご協力心から感謝いたします。
ありがとうございます
わお、いつの間に写真が…
Codex は、ボランティアのユーザが書いています。英語版も日本語版も同様です。だから、WordPress の現状に合ってないものもあるし、間違いもあります。そうしたところは見つけた人が直す、というのが本来の姿なのですが、私がサボっているだけです。もちろん、ForestRiver さんも書くことができますよ。
dbDelta() は、WordPress 随一融通がきかないので有名です。スペースひとつ間違えてもまともに動いてくれません。まあ、内部のコードを見てもらえばわかりますが、正規表現でちまちまやっているので、仕方がないのです。だから、前もってのデバッグは必須です。使うときには、ドキュメントをよく読み、そこに書いてあることを全て守る必要がありますので、ご注意ください。また、第二引数に false を与えると、テーブル操作は実行せずに、何をしようとしているかを教えてくれるようになってます。
驚かせてしまってすみません。(笑)
なるほど。やっぱりネットサービスって面白いですね。
私は恐れ多くてまだかけませんが…
dbDelta() はややこしいにおいがプンプンしますね。
勉強します。
大変勉強になりましす ありがとうございます。