これは私がWordPressのプラグインを開発する最初の試みであり、皆さんが私に与えることができるどんな助けでも感謝されるでしょう。
このプラグインは、ユーザーがその特定の領域とどのように対話するかを注意深く追跡する必要があります。データを記録するためのテーブルがあります。私は(プラグインのクラスで定義されている)この関数を書きました:
public function update_history($userid,$idevent,$eventdesc,$log){
//get a database object
echo "we got here";
global $wpdb;
$wpdb->show_errors();
$table_name = $wpdb->prefix . 'pw_history_log';
//values to write to database
$item = array(
'iduser' => $userid,
'ieventcode' => $idevent,
'dtevent' => date("Y-m-d H:i:s"),
'szactiondesc' => $eventdesc,
'siteid' => $log
);
// format values
$format = array('%d','%d','%s','%s','%d');
// Insert the data
$wpdb->insert($table_name, $item, $format);
}
私はこのように他の場所でそれを呼び出そうとしています:
do_action( 'update_history', 333, 2001, "test event", 1 );
add_action( 'init', 'update_history', 10, 4 );
私はエラーを受けていません。データベースにデータが入っていません。私が投げ込んだ愚かな声明の兆候も見られない。だから...関数は実行されていません。
誰かが私を正しい方向に向けることができますか?ここは本当にばかげている。
編集:私は管理者クラスの権利をインスタンス化していないと思います。私は関数を呼び出そうとしていた行を取り出して追加しました:
$plugin_name_admin = new Plugin_Admin("name", "1.0");
$plugin_name_admin->update_history(333, 2001, "test event", 1);
そして今それは働いています!
アクションフックを以下のように変更するだけです。
add_action( 'update_history', 'update_history', 10, 4 );
それが動作します。