Title: API filter example?
Last modified: August 22, 2016

---

# API filter example?

 *  Resolved [Billmel](https://wordpress.org/support/users/billmel/)
 * (@billmel)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/)
 * I’m interested in using the pdb-before_submit_update filter described under the
   API changes for 1.5. The hyperlink to more information on this particular filter
   doesn’t appear to go anywhere; what I would really like is an example code snippet;
   in my case I would like to record the current WP username as part of the submit
   process into a hidden field in the about to be updated record “updated_by”. I
   think this type of simple example would be generally helpful for people who want
   to use the API.
 * Mahalo,
 * Bill
 * [https://wordpress.org/plugins/participants-database/](https://wordpress.org/plugins/participants-database/)

Viewing 12 replies - 1 through 12 (of 12 total)

 *  Plugin Author [Roland Barker](https://wordpress.org/support/users/xnau/)
 * (@xnau)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902744)
 * I appreciate your interest, I do plan to write more tutorials.
 * Using that filter to add a value to a hidden field will work, and is very simple.
   You could use a callback like this on the filter:
 *     ```
       function add_user($post) {
          global $current_user;
          $post['updated_by'] = $current_user->user_name;
          return $post;
       }
       ```
   
 * You must have the updated_by field included in the form so that it will validate,
   the plugin will reject values that aren’t supposed to be part of the submission.
 *  Thread Starter [Billmel](https://wordpress.org/support/users/billmel/)
 * (@billmel)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902906)
 * Well, I added the following to my functions.php:
 *     ```
       <?php
   
       function update_user($post) {
   
          global $current_user;
          $post['updated_by'] = $current_user->user_name;
          return $post;
       }
   
       add_filter('pdb-before_submit_update','update_user');
   
       ?>
       ```
   
 * and added the field updated_by to my database as a type “Text-line”. I do not
   see anything updated in the record when I make a change to the record.
    I also
   tried just assigning a static value above, and it also didn’t record anything
   in the database entry.
 * What am I missing?
 * Mahalo,
 * Bill
 *  Plugin Author [Roland Barker](https://wordpress.org/support/users/xnau/)
 * (@xnau)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902914)
 * Do you have the “updated_by” field in your form as a hidden field?
 *  Thread Starter [Billmel](https://wordpress.org/support/users/billmel/)
 * (@billmel)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902917)
 * I deleted the entry which was a Text-line and then re-created it as a Hidden 
   field, but it is still not being updated. Does it need to have an initial value,
   or need to be marked Read only?
 *  Plugin Author [Roland Barker](https://wordpress.org/support/users/xnau/)
 * (@xnau)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902935)
 * No just the hidden field included in the form will be enough. You may need to
   add the WP setup function after the global is declared: [get_currentuserinfo()](http://codex.wordpress.org/get_currentuserinfo)
 *  Thread Starter [Billmel](https://wordpress.org/support/users/billmel/)
 * (@billmel)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902945)
 * Here’s what I have so far:
 *     ```
       <?php
   
       function update_user($post) {
   
          global $current_user;
          get_currentuserinfo();
   
             echo 'Username: ' . $current_user->user_login . "\n";
   
          $post['updated_by'] = $current_user->user_login;
          return $post;
       }
   
       add_filter('pdb-before_submit_update','update_user');
   
       ?>
       ```
   
 * When I do an update, I get the following:
 * Username: <name of the user who is doing the updating>
    Warning: Cannot modify
   header information – headers already sent by (output started at <path to functions
   file>/functions.php:10) in /home/content/81/9947681/html/sb/wp-includes/pluggable.
   php on line 1121
 * So it looks like there was an error that I couldn’t see until I enabled the debugging.
   Question is, why am I getting the Cannot modify header information error?
 * Mahalo
 *  Thread Starter [Billmel](https://wordpress.org/support/users/billmel/)
 * (@billmel)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902946)
 * Looks like the above error (Thanks Google) was from whitespace in my functions.
   php file. Removing the echo statement fixed that problem.
 * I have a new problem though; if a record has no value in the “updated_by” field,
   then this code updates it. If it already has a value, it apparently doesn’t overwrite
   that field with the new information. Seems odd..
 *  Thread Starter [Billmel](https://wordpress.org/support/users/billmel/)
 * (@billmel)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902948)
 * On further investigation, it looks as though this code does the right thing when
   the record is edited in the back end editor, but for some reason does not update
   the record when the edit is done from a front end page. They are obviously different
   code paths; do I need a different method for handling front end edits?
 * Mahalo,
 * Bill
 *  Thread Starter [Billmel](https://wordpress.org/support/users/billmel/)
 * (@billmel)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902949)
 * Even weirder; If I include the echo statement above with the username, it displays
   correctly after updating a record from the front end page, but does not actually
   update the record, while when I do the same from the back end, I get the “Warning:
   Cannot modify header information” error, but the record DOES correctly update.
   Clearly, there are two different code paths, one works, one doesn’t.
 *  Plugin Author [Roland Barker](https://wordpress.org/support/users/xnau/)
 * (@xnau)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902969)
 * The filter is in only one location in the code, so the same code is executed 
   in both cases, but the context is different and that can change how it acts. 
   Echoing during a function as you have done can lead to problems (such as the “
   headers already sent” error), it’s safer, but less convenient, to dump your message
   to the error log.
 * What would cause the record to not update would be an error in the callback, 
   but I don’t see a problem with your code. The one thing you must be sure of is
   that the “updated_by” hidden field is included in the form on the frontend. Open
   your edit form, then use the inspector (in your browser developers tools) to 
   make sure your “updated_by” hidden field is included.
 *  Thread Starter [Billmel](https://wordpress.org/support/users/billmel/)
 * (@billmel)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902970)
 * That’s it! The back end sees all fields in the record, while the front end was
   configured to show only certain groups, none of which had the field in it. Moving
   the field to a group that the front end can edit, even though the field is hidden,
   allows it to be updated. Conversely, if it isn’t in the group being displayed,
   it doesn’t get updated.
 * This is actually a very handy mechanism once you understand it, since it allows
   you to for example collect different information depending on what group of fields
   is being edited, and only updating the information relevant to the group. I hope
   you can create a useful demonstration that shows off this capability; I think
   it will prove to be very handy.
 * Mahalo,
 * Bill
 *  Plugin Author [Roland Barker](https://wordpress.org/support/users/xnau/)
 * (@xnau)
 * [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902974)
 * That’s the whole idea….I’m glad to hear you got it working.

Viewing 12 replies - 1 through 12 (of 12 total)

The topic ‘API filter example?’ is closed to new replies.

 * ![](https://ps.w.org/participants-database/assets/icon-256x256.jpg?rev=1389807)
 * [Participants Database](https://wordpress.org/plugins/participants-database/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/participants-database/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/participants-database/)
 * [Active Topics](https://wordpress.org/support/plugin/participants-database/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/participants-database/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/participants-database/reviews/)

 * 12 replies
 * 2 participants
 * Last reply from: [Roland Barker](https://wordpress.org/support/users/xnau/)
 * Last activity: [11 years, 2 months ago](https://wordpress.org/support/topic/api-filter-example/#post-5902974)
 * Status: resolved