rating.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. function ninja_forms_register_field_rating(){
  3. $args = array(
  4. 'name' => __( 'Star Rating', 'ninja-forms' ),
  5. 'sidebar' => 'template_fields',
  6. 'display_function' => 'ninja_forms_field_rating_display',
  7. 'pre_process' => 'ninja_forms_field_rating_pre_process',
  8. 'group' => 'standard_fields',
  9. 'edit_options' => array(
  10. array(
  11. 'name' => 'rating_stars',
  12. 'type' => 'text',
  13. 'label' => __( 'Number of stars', 'ninja-forms' ),
  14. 'width' => 'thin',
  15. 'default' => 5,
  16. ),
  17. ),
  18. 'edit_label' => true,
  19. 'edit_label_pos' => true,
  20. 'edit_req' => true,
  21. 'edit_custom_class' => true,
  22. 'edit_help' => true,
  23. 'edit_meta' => true,
  24. 'edit_conditional' => true,
  25. );
  26. ninja_forms_register_field('_rating', $args);
  27. }
  28. add_action('init', 'ninja_forms_register_field_rating');
  29. function ninja_forms_field_rating_display( $field_id, $data, $form_id = '' ){
  30. if( isset( $data['default_value'] ) ){
  31. $default_value = $data['default_value'];
  32. }else{
  33. $default_value = '';
  34. }
  35. if( isset( $data['rating_stars'] ) ){
  36. $rating_stars = $data['rating_stars'];
  37. }else{
  38. $rating_stars = 5;
  39. }
  40. $x = 1;
  41. while( $x <= $rating_stars ){
  42. ?>
  43. <input name="ninja_forms_field_<?php echo $field_id;?>" type="radio" class="ninja-forms-star" value="<?php echo $x;?>" <?php checked( $default_value, $x );?>/>
  44. <?php
  45. $x++;
  46. }
  47. }
  48. function ninja_forms_field_rating_pre_process( $field_id, $user_value ) {
  49. global $ninja_forms_processing;
  50. if ( $user_value == false ) {
  51. $ninja_forms_processing->update_field_value( $field_id, '' );
  52. }
  53. }