AppendAForm.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. final class NF_Admin_Metaboxes_AppendAForm extends NF_Abstracts_Metabox
  3. {
  4. protected $_post_types = array( 'post', 'page' );
  5. public function __construct()
  6. {
  7. parent::__construct();
  8. $this->_title = __( 'Append a Ninja Form', 'ninja-forms' );
  9. add_filter( 'the_content', array( $this, 'append_form' ) );
  10. }
  11. public function append_form( $content )
  12. {
  13. if ( isset( $GLOBALS[ 'post' ] ) ) {
  14. $post = $GLOBALS[ 'post' ];
  15. } else {
  16. $post = NULL;
  17. }
  18. if( ! $post || ! is_object( $post ) ) return $content;
  19. $form_id = get_post_meta( $post->ID, 'ninja_forms_form', TRUE );
  20. if( ! $form_id ) return $content;
  21. return $content . "[ninja_forms id=$form_id]";
  22. }
  23. public function save_post( $post_id )
  24. {
  25. if (
  26. defined('DOING_AUTOSAVE') && DOING_AUTOSAVE
  27. || ! isset( $_POST['nf_append_form'] )
  28. || ! wp_verify_nonce( $_POST['nf_append_form'], 'ninja_forms_append_form' )
  29. || ( 'page' == $_POST['post_type'] && !current_user_can( 'edit_page', $post_id ) )
  30. || ( 'post' == $_POST['post_type'] && !current_user_can( 'edit_post', $post_id ) )
  31. ) return $post_id;
  32. $post_id = absint( $post_id );
  33. $form_id = absint( $_POST['ninja_form_select'] );
  34. if ( empty ( $form_id ) ) {
  35. delete_post_meta( $post_id, 'ninja_forms_form' );
  36. } else {
  37. update_post_meta( $post_id, 'ninja_forms_form', $form_id );
  38. }
  39. }
  40. public function render_metabox( $post, $metabox )
  41. {
  42. wp_nonce_field( 'ninja_forms_append_form', 'nf_append_form' );
  43. $forms = Ninja_Forms()->form()->get_forms();
  44. $form_id = get_post_meta( $post->ID, 'ninja_forms_form', true );
  45. $none_text = '-- ' . __( 'None', 'ninja-forms' );
  46. Ninja_Forms()->template( 'admin-metabox-append-a-form.html.php', compact( 'forms', 'form_id', 'none_text' ) );
  47. }
  48. }