honeypot.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. function ninja_forms_register_field_honeypot(){
  3. $args = array(
  4. 'name' => __( 'Honey Pot', 'ninja-forms' ),
  5. 'sidebar' => '',
  6. 'edit_function' => '',
  7. 'display_function' => 'ninja_forms_field_honeypot_display',
  8. 'save_function' => '',
  9. 'group' => 'standard_fields',
  10. 'default_label' => __( 'If you are a human and are seeing this field, please leave it blank.', 'ninja-forms' ),
  11. 'edit_label' => false,
  12. 'edit_desc' => false,
  13. 'edit_label_pos' => false,
  14. 'default_label_pos' => 'above',
  15. 'default_value' => '',
  16. 'edit_req' => false,
  17. 'edit_custom_class' => false,
  18. 'edit_help' => false,
  19. 'edit_meta' => false,
  20. 'edit_conditional' => false,
  21. 'display_label' => true,
  22. 'process_field' => false,
  23. 'pre_process' => 'ninja_forms_field_honeypot_pre_process',
  24. 'edit_options' => array(
  25. array(
  26. 'type' => 'hidden',
  27. 'name' => 'honeypot_save',
  28. ),
  29. ),
  30. );
  31. ninja_forms_register_field('_honeypot', $args);
  32. }
  33. add_action('init', 'ninja_forms_register_field_honeypot');
  34. function ninja_forms_field_honeypot_display( $field_id, $data, $form_id = '' ){
  35. $field_class = ninja_forms_get_field_class( $field_id, $form_id ); ?>
  36. <input id="ninja_forms_field_<?php echo $field_id;?>" name="ninja_forms_field_<?php echo $field_id;?>" type="text" class="<?php echo $field_class;?>" value="" rel="<?php echo $field_id;?>" />
  37. <?php
  38. }
  39. function ninja_forms_field_honeypot_pre_process( $field_id, $user_value ){
  40. global $ninja_forms_processing;
  41. $plugin_settings = nf_get_settings();
  42. if(isset($plugin_settings['honeypot_error'])){
  43. $honeypot_error = __( $plugin_settings['honeypot_error'], 'ninja-forms' );
  44. }
  45. if( $ninja_forms_processing->get_action() != 'save' AND $ninja_forms_processing->get_action() != 'mp_save' AND !isset($_POST['_wp_login']) AND $user_value != '' ){
  46. if( is_object( $ninja_forms_processing)){
  47. $ninja_forms_processing->add_error('honeypot-'.$field_id, $honeypot_error, $field_id);
  48. }
  49. }
  50. }