将经过验证的文件上载添加到自定义表单

时间:2018-01-23 作者:Jaycbrf4

我有一个自定义联系人表单页面,我正在尝试添加一个用于验证文件大小和文件类型的上载字段。在添加验证之前,一切都正常。

    <?php
            /* Template Name: Contact-Page-with-upload
            *
            * A Custom PHP Contact us page. Add or change form fields on line 28 and in the form itself.
            * Jquery is used to add/remove Bootstrap has-error class to invalid fields.
            */

            /**
             * Get Error Class
             *
             * @return string;
             */
            function getErrorClass($failedKeys, $key)
            { 
              if(isset($failedKeys) && is_array($failedKeys) && in_array($key, $failedKeys))
              {
                return \'has-error\';
              }

              return \'\';
            }

            if(isset($_POST) && !empty($_POST))
            {
              // New Line Tag
              $nL = "<br />";

              // Response generation function
              $response = "";

              // Fuction to generate response
              function my_contact_form_generate_response($type, $message)
              {
                global $response;

                if($type == "success") $response = "<div class=\'success alert alert-success\' role=\'alert\' id=\'success-message\'>{$message} <i class=\'glyphicon glyphicon-thumbs-up\'></i></div>";
                else $response = "<div class=\'error alert alert-danger\' role=\'alert\' id=\'error-message\'>{$message} <i class=\'glyphicon glyphicon-thumbs-down\'></i> </div>";
              }

              // Response messages
              $missing_content  = "Please supply all information.";
              $email_invalid    = "Email Address Invalid.";
              $message_unsent   = "Message was not sent. Try Again.";
              $message_sent     = "Thanks! Your message has been sent.";

              // Define the fields we use, title => field name
              // This can be used to add fields into auto-validation below. 
              $userVariables = [
                \'First Name\'  => \'first_name\',
                \'Last Name\'   => \'last_name\',
                \'Phone\'       => \'phone\',
                \'Email\'       => \'email\',
                \'Comment\'     => \'comment\'

              ];

              // Instantiate variables for failed, successful validated fields
              $failedFields   = [];
              $validFields    = [];
              $failedKeys     = [];
              //$errors         = [];

              // Loop through each variable defined above, and check it\'s validity as a non-blank string. 
              // If successful, add it to the message array and strip all tags for security, and trim whitespace
              if(!empty($_POST))
              {
                foreach($userVariables as $title => $userField)
                {
                  // If our field did not pass validation, we push to failedFields array
                  if(!isset($_POST[$userField]) || !is_string($_POST[$userField]) || $_POST[$userField] == \'\')
                  {
                    $failedFields[]   = $title;
                    $failedKeys[]     = $userField;
                  }
                  // If successful, add this to validFields array and trim/clean the content
                  else
                  {
                    $validFields[$title] = trim(strip_tags(($_POST[$userField])));
                  }
                } 
              }

              // If we have > 0 failed fields, we will send a error response to the form
              if(!empty($failedFields))
              {
                // Concatenate message with failed fields in the message
                $failureMessage = "The following fields are required: " . implode(\', \', $failedFields);
                my_contact_form_generate_response("error", $failureMessage);
              }
              // Create HTML message
              $message  = \'<html><head>\';
              // define the Google Font used in the message
              $message .=\'<style>@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600");</style>\';
              $message .=\'</head>\';
              $message .=\'<body style="font-family:Open Sans, sans-serif; font-weight:400;">\';
              $message .= "<h3>Message from contact form on" .get_bloginfo(\'name\') ."</h3>";
              $message .= \'<table rules="all" style="border-color: #666;" cellpadding="10">\';

              // If we have valid fields listed above, we will concatenate a message for the email body then close the table, body, and html tags
              if(!empty($validFields))
              {
                foreach($validFields as $title => $value)
                {
                  $message .= "<tr style=\'background: #eee;\'><td style=\'width:200px; font-family: Open Sans, sans-serif; margin: 0px; padding:8px; font-weight: 600;\'>" . $title . ":</td><td style=\'font-family: Open Sans, sans-serif; margin: 0px; padding:8px; font-weight: 400;\'>" . $value . "</td></tr>";
                }
              }

              $message .= \'</table></body></html>\';
              // end message

              /**
              *
              * Handle file attachment
              *
              */
              if ( ! function_exists( \'wp_handle_upload\' ) ) 
              {
                  require_once( ABSPATH . \'wp-admin/includes/file.php\' );
              }

              $uploadedFile = false;
              $movefile     = false;

              if(isset($_FILES[\'attachmentFile\']))
              {
                $uploadedFile = $_FILES[\'attachmentFile\'];

                //Get the uploaded file information
                $name_of_uploaded_file = basename($uploadedFile[\'name\']);

                //get the file extension of the file
                $type_of_uploaded_file = substr($name_of_uploaded_file, strrpos($name_of_uploaded_file, \'.\') + 1);

                $size_of_uploaded_file = $uploadedFile["size"] / 1024; //size in KBs

                //Settings
                $max_allowed_file_size  = 2000; // size in KB
                $allowed_extensions     = array("jpg", "jpeg", "png", "pdf");
                $upload_overrides       = array( \'test_form\' => false );

                //Validations
                if($size_of_uploaded_file > $max_allowed_file_size )
                {
                  $failedKeys[] = \'attachmentFile\';
                  my_contact_form_generate_response("error", "Size of file should be less than $max_allowed_file_size");
                }

                //------ Validate the file extension 
                $allowed_ext = false;

                for($i = 0; $i <sizeof($allowed_extensions); $i++)
                {
                  if(strcasecmp($allowed_extensions[$i], $type_of_uploaded_file) == 0)
                  {
                    $allowed_ext = true;
                  }
                }

                if(!$allowed_ext)
                {
                  $failedKeys[] = \'attachmentFile\';
                  my_contact_form_generate_response("error", "The uploaded file is not supported file type. Only the following file types are supported: ".implode(\', \',$allowed_extensions));
                }

                $movefile = wp_handle_upload($uploadedfile, $upload_overrides);

                var_dump($movefile); die();

                if($movefile && ! isset( $movefile[\'error\'] ) ) {

                    $movefile[\'url\'];
                }
              }

              // Mailer variables
              $to           = get_option(\'admin_email\');
              $subject      = "Message from contact form on ".get_bloginfo(\'name\');
              $headers      = \'From: \'. $email . "\\r\\n" . \'Reply-To: \' . $email . "\\r\\n";
              $attachments  = $movefile && isset($movefile[\'file\']) ? array($movefile[\'file\']) : false;

              if(empty($failedFields) && isset($_POST[\'gotcha\']) && $_POST[\'gotcha\'] == \'\')
              {
                // Add HTML response type support to the email
                add_filter(\'wp_mail_content_type\',create_function(\'\', \'return "text/html"; \'));

                // Create the message and send, returning success variable
                $sent = wp_mail($to, $subject, $message, $headers, isset($attachments) && is_array($attachments) && !empty($attachments) ? $attachments : []);

                // If successful, kick back success on form
                if($sent) 
                {
                  my_contact_form_generate_response("success", $message_sent); 
                }
                // On failure, send error response back to the form
                else 
                {
                  my_contact_form_generate_response("error", $message_unsent); 
                  unlink( $movefile[\'file\'] );
                }
              }
              else if($_POST[\'submitted\'] || !empty($failedFields)) 
              {
                my_contact_form_generate_response("error", $failureMessage);
              }
            }
            ?>
            <!-- End Form Logic -->


            <?php get_header(); ?>
            <div id="main" class="clearfix wow fadeIn" role="main">
              <div id="content">
                <div class="container">
                  <div class="row">
                    <div class="col-sm-12">
                      <h1 class="page-title">Contact Us</h1>
                        <div id="respond">

                        <?php echo $response; ?>
                          <form class="form-horizontal well" action="<?php the_permalink(); ?>" method="post" id="contact_form" enctype="multipart/form-data">
                            <fieldset>
                              <legend>Do you have questions, interested in a product or would like to inquire about delivery options?</legend>
                              <p>Please fill out the contact form and we will get back to you ASAP!</p>
                                <div class="col-sm-6">
                                  <!-- Text input-->
                                  <div class="form-group <?php echo getErrorClass($failedKeys, \'first_name\'); ?>">
                                    <label class="control-label">First Name</label>
                                      <div class="input-group">
                                        <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                        <input name="first_name" placeholder="First Name" class="form-control" type="text" value="<?php echo esc_attr($_POST[\'first_name\']); ?>" required>
                                      </div>
                                    </div>
                                    <!-- Text input-->
                                    <div class="form-group <?php echo getErrorClass($failedKeys, \'last_name\'); ?>">
                                      <label class="control-label">Last Name</label>
                                      <div class="input-group">
                                        <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                        <input name="last_name" placeholder="Last Name" class="form-control" type="text" value="<?php echo esc_attr($_POST[\'last_name\']); ?>" required>
                                      </div>
                                    </div>
                                  </div><!--/.col-->
                                  <div class="col-sm-6">
                                    <!-- Text input-->
                                    <div class="form-group <?php echo getErrorClass($failedKeys, \'email\'); ?>">
                                      <label class="control-label">E-Mail</label>
                                      <div class="input-group">
                                        <span class="input-group-addon"><i class="glyphicon glyphicon-envelope"></i></span>
                                        <input name="email" placeholder="E-Mail Address" class="form-control" type="email" value="<?php echo esc_attr($_POST[\'email\']); ?>" required>
                                      </div>
                                    </div>
                                    <!-- Text input-->
                                    <div class="form-group <?php echo getErrorClass($failedKeys, \'phone\'); ?>">
                                      <label class="control-label">Phone #</label>
                                      <div class="input-group">
                                        <span class="input-group-addon"><i class="glyphicon glyphicon-earphone"></i></span>
                                        <input name="phone" placeholder="(855)555-1212" class="form-control" type="text" value="<?php echo esc_attr($_POST[\'phone\']); ?>" required>
                                      </div>
                                    </div>
                                  </div><!--/.col-->
                                  <div class="col-sm-12">
                                    <!-- Text area -->
                                    <div class="form-group <?php echo getErrorClass($failedKeys, \'comment\'); ?>">
                                      <label class="control-label">Your Message</label>
                                      <div class="input-group">
                                        <span class="input-group-addon"><i class="glyphicon glyphicon-pencil"></i></span>
                                        <textarea class="form-control" name="comment" required><?php echo esc_textarea($_POST[\'comment\']); ?></textarea>
                                      </div>
                                    </div>
                                    <div class="form-group <?php echo getErrorClass($failedKeys, \'file\'); ?>">
                                       <label class="control-label">Attach file</label>
                                              <input type="file" name="attachmentFile">
                                    </div><!-- /.form-group -->
                                    <!--Anti-Spam Field-->
                                    <div class="form-group hidden" id="gotcha">
                                      <label class="control-label">Leave this field empty</label>
                                      <div class="input-group">
                                        <input name="gotcha" class="form-control" type="text">
                                      </div>
                                    </div>
                                    <div class="form-group hidden">
                                      <input type="hidden" name="submitted" value="1">
                                    </div>
                                    <!-- Button -->
                                    <div class="form-group">
                                      <button type="submit" class="btn btn-info">Send
                                        <span class="glyphicon glyphicon-send"></span>
                                      </button>
                                    </div>
                                  </div><!--/.col-md-8-->
                                </fieldset>
                              </form>                   
                              <script>
                                // Add/Remove Bootstrap "has-error" class from invalid fields on key-up and blur
                                jQuery(\'#contact_form :input\').keyup(function ()
                                {
                                  var formElement   = jQuery(this);
                                      formGroup   = formElement.closest(\'.form-group\');

                                  if(formGroup.hasClass(\'has-error\') && jQuery.trim(formElement.val()).length)
                                  {
                                    formGroup.removeClass(\'has-error\');
                                  }
                                });

                                jQuery(\'#contact_form :input\').blur(function ()
                                {
                                  var formElement   = jQuery(this);
                                      formGroup   = formElement.closest(\'.form-group\');

                                  if(jQuery.trim(formElement.val()).length==0)
                                  {
                                    formGroup.addClass(\'has-error\');
                                  }
                                });
                              </script>

                          </div><!--/.respond-->
                      </div><!--/.col-->
                  </div><!-- /.row-->
                </div><!--/.container-->
                <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
                <article id="post-<?php the_ID(); ?>" <?php post_class( \'clearfix\'); ?> role="article">
                    <section class="post_content">
                        <?php the_content(); ?>
                    </section><!-- end article header -->
                </article><!-- end article -->

                <?php endwhile; ?>
                <?php else : ?>
                <article id="post-not-found">
                  <div class="container">
                    <div class="row">
                      <div class="col-sm-12">
                        <header>
                          <h1><?php _e("Not Found", "JD_BOOTSTRAP"); ?></h1>
                        </header>
                        <section class="post_content">
                          <p><?php _e("Sorry, but the requested resource was not found on this site.", "JD_BOOTSTRAP"); ?></p>
                        </section>
                      </div><!-- /.col-sm-12 -->
                    </div><!-- /.row -->
                  </div><!-- /.container -->          
                </article>

            <?php endif; ?>

              </div><!-- /content -->
            </div><!-- /main -->
                <?php get_footer(); ?>

1 个回复
SO网友:Jaycbrf4
    <?php
      /* Template Name: Contact-Page-with-upload
      *
      * A Custom PHP Contact us page. Add or change form fields on line 28 and in the form itself.
      * Jquery is used to add/remove Bootstrap has-error class to invalid fields.
      */

      /**
       * Get Error Class
       *
       * @return string;
       */

      $response = \'\';

      function getErrorClass($failedKeys, $key)
      { 
        if(isset($failedKeys) && is_array($failedKeys) && in_array($key, $failedKeys))
        {
          return \'has-error\';
        }

        return \'\';
      }

      if(isset($_POST) && !empty($_POST))
      {
        // New Line Tag
        $nL = "<br />";

        // Response generation function

        // Fuction to generate response
        function my_contact_form_generate_response($type, $message)
        {
          global $response;

          if($type == "success") 
          {
            $response = "<div class=\'success alert alert-success\' role=\'alert\' id=\'success-message\'> <i class=\'glyphicon glyphicon-thumbs-up\'></i> &nbsp; {$message}</div>";
          }
          else 
          {
            $response = "<div class=\'error alert alert-danger\' role=\'alert\' id=\'error-message\'><i class=\'glyphicon glyphicon-warning-sign\'></i> &nbsp; {$message} </div>";
          }
        }

        // Response messages
        $missing_content  = "Please supply all information.";
        $email_invalid    = "Email Address Invalid.";
        $message_unsent   = "Message was not sent. Try Again.";
        $message_sent     = "Thanks! Your message has been sent.";

        // Define the fields we use, title => field name
        // This can be used to add fields into auto-validation below. 
        $userVariables = [
          \'First Name\'  => \'first_name\',
          \'Last Name\'   => \'last_name\',
          \'Phone\'       => \'phone\',
          \'Email\'       => \'email\',
          \'Comment\'     => \'comment\'
        ];

        // Instantiate variables for failed, successful validated fields
        $failedFields   = [];
        $validFields    = [];
        $failedKeys     = [];

        // Loop through each variable defined above, and check it\'s validity as a non-blank string. 
        // If successful, add it to the message array and strip all tags for security, and trim whitespace
        if(!empty($_POST))
        {
          foreach($userVariables as $title => $userField)
          {
            // If our field did not pass validation, we push to failedFields array
            if(!isset($_POST[$userField]) || !is_string($_POST[$userField]) || $_POST[$userField] == \'\')
            {
              $failedFields[]   = $title;
              $failedKeys[]     = $userField;
            }
            // If successful, add this to validFields array and trim/clean the content
            else
            {
              $validFields[$title] = trim(strip_tags(($_POST[$userField])));
            }
          } 
        }

        // If we have > 0 failed fields, we will send a error response to the form
        if(!empty($failedFields))
        {
          // Concatenate message with failed fields in the message
          $failureMessage = "The following fields are required: " . implode(\', \', $failedFields);
          my_contact_form_generate_response("error", $failureMessage);
        }
        // Create HTML message
        $message  = \'<html><head>\';
        // define the Google Font used in the message
        $message .=\'<style>@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600");</style>\';
        $message .=\'</head>\';
        $message .=\'<body style="font-family:Open Sans, sans-serif; font-weight:400;">\';
        $message .= "<h3>Message from contact form on" .get_bloginfo(\'name\') ."</h3>";
        $message .= \'<table rules="all" style="border-color: #666;" cellpadding="10">\';

        // If we have valid fields listed above, we will concatenate a message for the email body then close the table, body, and html tags
        if(!empty($validFields))
        {
          foreach($validFields as $title => $value)
          {
            $message .= "<tr style=\'background: #eee;\'><td style=\'width:200px; font-family: Open Sans, sans-serif; margin: 0px; padding:8px; font-weight: 600;\'>" . $title . ":</td><td style=\'font-family: Open Sans, sans-serif; margin: 0px; padding:8px; font-weight: 400;\'>" . $value . "</td></tr>";
          }
        }

        $message .= \'</table></body></html>\';
        // end message

        /**
        *
        * Handle file attachment
        *
        */
        if ( ! function_exists( \'wp_handle_upload\' ) ) 
        {
            require_once( ABSPATH . \'wp-admin/includes/file.php\' );
        }

        $uploadedFile     = false;
        $movefile         = false;
        $failedAttachment = false;

        if(isset($_FILES[\'attachmentFile\']) && file_exists($_FILES[\'attachmentFile\'][\'tmp_name\']))
        {
          $uploadedFile = $_FILES[\'attachmentFile\'];

          //Get the uploaded file information
          $name_of_uploaded_file = basename($uploadedFile[\'name\']);

          //get the file extension of the file
          $type_of_uploaded_file = substr($name_of_uploaded_file, strrpos($name_of_uploaded_file, \'.\') + 1);

          $size_of_uploaded_file = $uploadedFile["size"] / 1024; //size in KBs

          //Settings
          $max_allowed_file_size  = 2000; // size in KB
          $allowed_extensions     = array("jpg", "jpeg", "png", "pdf");
          $upload_overrides       = array( \'test_form\' => false );

          //Validations
          if($size_of_uploaded_file > $max_allowed_file_size)
          {
            $failedKeys[]     = \'attachmentFile\';
            $failedFields[]   = \'Uploaded File\';
            $failedAttachment = true;
            my_contact_form_generate_response("error", "Size of uploaded file should be less than ". round($max_allowed_file_size / 1024). "mb ");
          }

          //------ Validate the file extension 
          $allowed_ext = false;

          for($i = 0; $i <sizeof($allowed_extensions); $i++)
          {
            if(strcasecmp($allowed_extensions[$i], $type_of_uploaded_file) == 0)
            {
              $allowed_ext = true;
            }
          }

          if(!$allowed_ext)
          {
            $failedKeys[]     = \'attachmentFile\';
            $failedFields[]   = \'Uploaded File\';
            $failedAttachment = true;
            my_contact_form_generate_response("error", "The uploaded file is not supported file type. Only the following file types are supported: ".implode(\', \',$allowed_extensions));
          }

          $movefile = wp_handle_upload($uploadedFile, $upload_overrides);

          if($movefile && ! isset( $movefile[\'error\'] ) ) {

              $movefile[\'url\'];
          }
        }

        if(empty($failedFields) && !$failedAttachment && isset($_POST[\'gotcha\']) && $_POST[\'gotcha\'] == \'\')
        {
          // Mailer variables
          $to           = get_option(\'admin_email\');
          $subject      = "Message from contact form on ".get_bloginfo(\'name\');
          $headers      = \'From: \'. $email . "\\r\\n" . \'Reply-To: \' . $email . "\\r\\n";
          $attachment   = $movefile && isset($movefile[\'file\']) ? $movefile[\'file\'] : false;

          // Add HTML response type support to the email
          add_filter(\'wp_mail_content_type\',create_function(\'\', \'return "text/html"; \'));

          // Create the message and send, returning success variable
          $sent = wp_mail($to, $subject, $message, $headers, $attachment);

          // If successful, kick back success on form
          if($sent) 
          {
            my_contact_form_generate_response("success", $message_sent); 
          }
          // On failure, send error response back to the form
          else 
          {
            my_contact_form_generate_response("error", $message_unsent); 
            unlink( $movefile[\'file\'] );
          }
        }
        else if(($_POST[\'submitted\'] || !empty($failedFields)) && !$failedAttachment) 
        {
          my_contact_form_generate_response("error", $failureMessage);
        }
      }
      ?>
      <!-- End Form Logic -->


      <?php get_header(); ?>
      <div id="main" class="clearfix wow fadeIn" role="main">
        <div id="content">
          <div class="container">
            <div class="row">
              <div class="col-sm-12">
                <h1 class="page-title">Contact Us</h1>
                  <div id="respond">

                  <?php echo $response; ?>
                    <form class="form-horizontal well" action="<?php the_permalink(); ?>" method="post" id="contact_form" enctype="multipart/form-data">
                      <fieldset>
                        <legend>Do you have questions, interested in a product or would like to inquire about delivery options?</legend>
                        <p>Please fill out the contact form and we will get back to you ASAP!</p>
                          <div class="col-sm-6">
                            <!-- Text input-->
                            <div class="form-group <?php echo getErrorClass($failedKeys, \'first_name\'); ?>">
                              <label class="control-label">First Name</label>
                                <div class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                  <input name="first_name" placeholder="First Name" class="form-control" type="text" value="<?php echo esc_attr($_POST[\'first_name\']); ?>" required>
                                </div>
                              </div>
                              <!-- Text input-->
                              <div class="form-group <?php echo getErrorClass($failedKeys, \'last_name\'); ?>">
                                <label class="control-label">Last Name</label>
                                <div class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                  <input name="last_name" placeholder="Last Name" class="form-control" type="text" value="<?php echo esc_attr($_POST[\'last_name\']); ?>" required>
                                </div>
                              </div>
                            </div><!--/.col-->
                            <div class="col-sm-6">
                              <!-- Text input-->
                              <div class="form-group <?php echo getErrorClass($failedKeys, \'email\'); ?>">
                                <label class="control-label">E-Mail</label>
                                <div class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-envelope"></i></span>
                                  <input name="email" placeholder="E-Mail Address" class="form-control" type="email" value="<?php echo esc_attr($_POST[\'email\']); ?>" required>
                                </div>
                              </div>
                              <!-- Text input-->
                              <div class="form-group <?php echo getErrorClass($failedKeys, \'phone\'); ?>">
                                <label class="control-label">Phone #</label>
                                <div class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-earphone"></i></span>
                                  <input name="phone" placeholder="(855)555-1212" class="form-control" type="text" value="<?php echo esc_attr($_POST[\'phone\']); ?>" required>
                                </div>
                              </div>
                            </div><!--/.col-->
                            <div class="col-sm-12">
                              <!-- Text area -->
                              <div class="form-group <?php echo getErrorClass($failedKeys, \'comment\'); ?>">
                                <label class="control-label">Your Message</label>
                                <div class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-pencil"></i></span>
                                  <textarea class="form-control" name="comment" required><?php echo esc_textarea($_POST[\'comment\']); ?></textarea>
                                </div>
                              </div>
                              <div class="form-group <?php echo getErrorClass($failedKeys, \'attachmentFile\'); ?>">
                                 <label class="control-label">Attach file</label>
                                        <input type="file" name="attachmentFile">
                              </div><!-- /.form-group -->
                              <!--Anti-Spam Field-->
                              <div class="form-group hidden" id="gotcha">
                                <label class="control-label">Leave this field empty</label>
                                <div class="input-group">
                                  <input name="gotcha" class="form-control" type="text">
                                </div>
                              </div>
                              <div class="form-group hidden">
                                <input type="hidden" name="submitted" value="1">
                              </div>
                              <!-- Button -->
                              <div class="form-group">
                                <button type="submit" class="btn btn-info">Send
                                  <span class="glyphicon glyphicon-send"></span>
                                </button>
                              </div>
                            </div><!--/.col-md-8-->
                          </fieldset>
                        </form>                   
                        <script>
                          // Add/Remove Bootstrap "has-error" class from invalid fields on key-up and blur
                          jQuery(\'#contact_form :input\').keyup(function ()
                          {
                            var formElement   = jQuery(this);
                                formGroup   = formElement.closest(\'.form-group\');

                            if(formGroup.hasClass(\'has-error\') && jQuery.trim(formElement.val()).length)
                            {
                              formGroup.removeClass(\'has-error\');
                            }
                          });

                          jQuery(\'#contact_form :input\').blur(function ()
                          {
                            var formElement   = jQuery(this);
                                formGroup   = formElement.closest(\'.form-group\');

                            if(jQuery.trim(formElement.val()).length==0)
                            {
                              formGroup.addClass(\'has-error\');
                            }
                          });
                        </script>

                    </div><!--/.respond-->
                </div><!--/.col-->
            </div><!-- /.row-->
          </div><!--/.container-->
          <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
          <article id="post-<?php the_ID(); ?>" <?php post_class( \'clearfix\'); ?> role="article">
              <section class="post_content">
                  <?php the_content(); ?>
              </section><!-- end article header -->
          </article><!-- end article -->

          <?php endwhile; ?>
          <?php else : ?>
          <article id="post-not-found">
            <div class="container">
              <div class="row">
                <div class="col-sm-12">
                  <header>
                    <h1><?php _e("Not Found", "JD_BOOTSTRAP"); ?></h1>
                  </header>
                  <section class="post_content">
                    <p><?php _e("Sorry, but the requested resource was not found on this site.", "JD_BOOTSTRAP"); ?></p>
                  </section>
                </div><!-- /.col-sm-12 -->
              </div><!-- /.row -->
            </div><!-- /.container -->          
          </article>

      <?php endif; ?>

        </div><!-- /content -->
      </div><!-- /main -->
          <?php get_footer(); ?>
结束

相关推荐

Server side validation

我正在尝试对post字段(自定义和/或非自定义字段)进行服务器端验证。验证工作正常,但如果验证失败,我似乎无法阻止帖子保存。我试过像这样的钩子save_post, publish_post, wp_insert_post_data, 等等。所有这些钩子都被调用了,但除非我使用wp_die(). 要明确的是,我不想改变职位状态;我只想返回到帖子页面(未保存),并在字段验证失败时显示一条消息。我认为这是非常基本的东西,但无论我做什么,这篇文章都会被保存下来。UPDATE:好的,那么pre_post_updat