2017-02-06 3 views
0

Ich habe diesen folgenden Code, der eine benutzerdefinierte Art Post namens: ("guy_pictures") von frontend erstellen. Der ganze Code scheint gut zu sein, aber es ist einfach nicht den Post im Backend zu erstellen.WordPress: Frontend Formular zum Erstellen benutzerdefinierter Art Post mit vorgestellten Bild

Funktion:

  function insert_attachment($file_handler,$post_id,$setthumb='false') { 
      if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK){ 
       return __return_false(); 
      } 
      require_once(ABSPATH . "wp-admin" . '/includes/image.php'); 
      require_once(ABSPATH . "wp-admin" . '/includes/file.php'); 
      require_once(ABSPATH . "wp-admin" . '/includes/media.php'); 

      echo $attach_id = media_handle_upload($file_handler, $post_id); 
      set_post_thumbnail($post_id , $attach_id); 
      //set post thumbnail if setthumb is 1 
      if ($setthumb == 1) update_post_meta($post_id,'_thumbnail_id',$attach_id); 
      return $attach_id; 
     } 

Shortcode:

 function new_upload_form(){ 
      $content = ''; 

      // Check if the form was submitted 
      if('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action'])) { 

      // Do some minor form validation to make sure there is content 
      if (isset ($_POST['title'])) { 
       $title = $_POST['title']; 
      } else { 
       $content .= 'Please enter a title'; 
      } 
      if (isset ($_POST['description'])) { 
       $description = $_POST['description']; 
      } else { 
       $content .= 'Please enter the content'; 
      } 

      // Add the content of the form to $post as an array 
      $post = array(
       'post_title' => $title, 
       'post_content' => $description, 
       'post_category' => $_POST['cat'], // Usable for custom taxonomies too 
       'post_status' => 'draft',   // Choose: publish, preview, future, etc. 
       'post_type'  => 'guy_pictures' // Use a custom post type if you want to 
      ); 
      $pid = wp_insert_post($post); // Pass the value of $post to WordPress the insert function 

       if ($_FILES) { 
        array_reverse($_FILES); 
        $i = 0;//this will count the posts 
        foreach ($_FILES as $file => $array) { 
         if ($i == 0) $set_feature = 1; //if $i ==0 then we are dealing with the first post 
         else $set_feature = 0; //if $i!=0 we are not dealing with the first post 
         $newupload = insert_attachment($file, $pid, $set_feature); 
         $i++; //count posts 
        } 
       } 

      } 


      $content .= '<form id="picture_upload_form" action="" method="post" enctype="multipart/form-data"> 
         <p><label for="title">Title</label><br /> 
           <input type="text" id="title" value="" tabindex="1" size="20" name="title" /> 
           </p> 
           <p><label for="description">Description</label><br /> 
           <textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea> 
           </p> 

         <label for="file">Filename:</label> 
         <input type="file" name="file" id="file"><br> 
         <p align="right"><input type="submit" value="Submit" tabindex="6" id="submit" name="submit" /></p> 

           <input type="hidden" name="post_type" id="post_type" value="domande" /> 
          <input type="hidden" name="action" value="post" /> 
          '.wp_nonce_field('new-post').' 
         </form>'; 

      return $content; 
     } 
     add_shortcode("new_upload", "new_upload_form"); 

Antwort

0

Blick in: https://www.advancedcustomfields.com/

Es hat seine eigene acf_form() PHP-Funktion, die leicht verwendet werden kann, zu erstellen und zu bearbeiten Beiträge von jeder Beitragstyp.

Verwandte Themen