web-dev-qa-db-fra.com

création d'une fonction personnalisée pour consigner les actions dans le plugin

C’est la première fois que je participe au développement du plug-in WordPress et toute aide que vous pourrez me fournir serait appréciée.

Ce plugin doit garder une trace de la façon dont les utilisateurs interagissent avec certaines zones de celui-ci. J'ai une table pour enregistrer les données. J'ai écrit cette fonction (définie dans la classe du plugin):


 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);
}

J'essaie de l'appeler ailleurs comme ceci:

do_action( 'update_history', 333, 2001, "test event", 1 );
add_action( 'init', 'update_history', 10, 4 );

Je ne reçois pas d'erreurs. Je ne reçois pas de données dans la base de données. Je ne reçois aucun signe de la déclaration d'écho stupide que j'ai jeté, non plus. Alors ... la fonction n'est pas en cours d'exécution.

Est-ce que quelqu'un peut-il me montrer la bonne direction? Je me sens vraiment stupide ici.

EDIT: Je pense que je ne suis pas instancier la classe admin droit. J'ai sorti les lignes où j'essayais d'appeler la fonction et ajouté:

$plugin_name_admin = new Plugin_Admin("name", "1.0");
$plugin_name_admin->update_history(333, 2001, "test event", 1);

et maintenant ça marche!

1
Deleyna

Il suffit de changer le crochet d’action pour:

add_action( 'update_history', 'update_history', 10, 4 );

Ça va marcher.

0
Baikare Sandeep