it-swarm.com.de

Wie füge ich Medien aus dem Front-End zu einem vorhandenen Beitrag hinzu?

Golden Apples Design erstellt (soweit ich weiß) die Medien-Upload-Funktion, die viele Leute auf WP.A und anderswo zu empfehlen scheinen. Alle Fragen und Antworten, die ich in StackExchange finden kann, beziehen sich auf die Erstellung eines völlig neuen Beitrags.

Wie können Sie dieses (oder ein anderes Snippet) am besten dazu bringen, Medien vom Front-End hochzuladen, sie an den aktuellen Beitrag anzuhängen, die entsprechenden Miniaturansichten zu generieren und dann die Seite mit dem neuen Bild in der [Galerie] zu aktualisieren?

Hier ist Thans Code: In der Funktionsdatei ...

function insert_attachment($file_handler,$post_id,$setthumb='false') {

  // check to make sure its a successful upload
  if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __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');

  $attach_id = media_handle_upload( $file_handler, $post_id );

  if ($setthumb) update_post_meta($post_id,'_thumbnail_id',$attach_id);
  return $attach_id;

In der Kopfzeile der Seitenvorlage ...

// set $post_id to the id of the post you want to attach
// these uploads to (or 'null' to just handle the uploads
// without attaching to a post)

if ($_FILES) {
  foreach ($_FILES as $file => $array) {
    $newupload = insert_attachment($file,$post_id);
    // $newupload returns the attachment id of the file that
    // was just uploaded. Do whatever you want with that now.
  }
}

Verwendetes Formular hochladen ...

<form method="post" action="#" enctype="multipart/form-data" >
  <input type="file" name="an_uploaded_attachment">
  <input type="file" name="another_uploaded_attachment">
  <input type="file" name="yet_another_uploaded_attachment">
  <input type="submit">
<form>
3
torinagrippa

@AboSami hat diese Frage tatsächlich beantwortet in einem älteren Beitrag, der nicht in meiner Suche nach Sorgfalt auftauchte. Während er nach etwas anderem suchte, funktionierte sein Beispielcode hervorragend.

Hier ist das Skript:

<?php $post_id = $post->ID;
if ( isset( $_POST['html-upload'] ) && !empty( $_FILES ) ) {
    require_once(ABSPATH . 'wp-admin/includes/admin.php');
    $id = media_handle_upload('async-upload', $post_id); //post id of Client Files page
    unset($_FILES);
    if ( is_wp_error($id) ) {
        $errors['upload_error'] = $id;
        $id = false;
    }

    if ($errors) {
        echo "<p>There was an error uploading your file.</p>";
    } else {
        echo "<p>Your file has been uploaded.</p>";
    }
}

?>
    <form id="file-form" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST">

    <p id="async-upload-wrap"><label for="async-upload">upload</label>
    <input type="file" id="async-upload" name="async-upload"> <input type="submit" value="Upload" name="html-upload"></p>

    <p><input type="hidden" name="post_id" id="post_id" value="<?php echo $post_id ?>" />
    <?php wp_nonce_field('client-file-upload'); ?>
    <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" /></p>

    <p><input type="submit" value="Save all changes" name="save" style="display: none;"></p>
    </form>
4
torinagrippa

Ändern Sie in Ihrem Header $post_id in $post->ID.

// set $post_id to the id of the post you want to attach
// these uploads to (or 'null' to just handle the uploads
// without attaching to a post)

if ($_FILES) {
  foreach ($_FILES as $file => $array) {
    $newupload = insert_attachment($file,$post->ID);
    // $newupload returns the attachment id of the file that
    // was just uploaded. Do whatever you want with that now.
  }
}
1