Programmgesteuertes Hinzufügen eines WordPress-Beitrags mit Anhang

Lesezeit: 2 Minuten

Benutzeravatar von Salman Khimani
Salman Khimani

Ich erhalte post_title, post_content und andere Dinge in $_REQUEST sowie eine Bilddatei. Ich möchte das alles als Beitrag in der WordPress-Datenbank speichern. Ich habe auf meiner Seite

<?php
require_once("wp-config.php");
$user_ID; //getting it from my function
$post_title = $_REQUEST['post_title'];
$post_content = $_REQUEST['post_content'];
$post_cat_id = $_REQUEST['post_cat_id']; //category ID of the post
$filename = $_FILES['image']['name'];

//I got this all in a array

$postarr = array(
 'post_status' => 'publish',
 'post_type' => 'post',
 'post_title' => $post_title,
 'post_content' => $post_content,
 'post_author' => $user_ID,
 'post_category' => array($category) 
 );
$post_id = wp_insert_post($postarr);

?>

Dadurch werden alle Dinge in der Datenbank als Post abgerufen, aber ich weiß nicht, wie ich den Anhang und sein Post-Meta hinzufügen soll.

Wie kann ich das machen? Kann mir jemand helfen? Ich bin wirklich verwirrt und habe ein paar Tage damit verbracht, das Problem zu lösen.

  • Du solltest die wp-load.php anstelle der Konfigurationsdatei einschließen.

    – Johannes Magnolie

    21. Mai 2013 um 6:58 Uhr

Benutzeravatar von Todd Moses
Tod Moses

Um einen Anhang hinzuzufügen, verwenden Sie wp_insert_attachment():

https://developer.wordpress.org/reference/functions/wp_insert_attachment/

BEISPIEL:

<?php
  $wp_filetype = wp_check_filetype(basename($filename), null );
  $attachment = array(
     'post_mime_type' => $wp_filetype['type'],
     'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
     'post_content' => '',
     'post_status' => 'inherit'
  );
  $attach_id = wp_insert_attachment( $attachment, $filename, 37 );
  // you must first include the image.php file
  // for the function wp_generate_attachment_metadata() to work
  require_once(ABSPATH . "wp-admin" . '/includes/image.php');
  $attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
  wp_update_attachment_metadata( $attach_id,  $attach_data );
?>

Verwenden Sie zum Hinzufügen von Metadaten wp_update_attachment_metadata():

https://developer.wordpress.org/reference/functions/wp_update_attachment_metadata/

  • Ich denke, es ist nur ein Kopieren und Einfügen von dieser URL. Kannst du mir sagen, wie ich meine Variablen darin verwenden kann? Wird es ein Bild hochladen, das durch Anfrage zu den wp-Inhalten/Uploads kommt?

    – Salman Khimani

    28. September 2010 um 6:00 Uhr

  • $post_content geht an post_content, $post_id erhältst du aus der Post-Einfügung, etc…

    – Todd Moses

    28. September 2010 um 17:22 Uhr

Benutzeravatar von JD
JD

Wenn Sie den Anhang hochladen und in die Datenbank einfügen müssen, sollten Sie verwenden media_handle_upload(), die all das für Sie erledigt. Alles, was Sie tun müssen, ist, ihm den Index der Datei in der $_FILES array und die ID des übergeordneten Beitrags:

$attachment_id = media_handle_upload( 'image', $post_id );
 
if ( is_wp_error( $attachment_id ) ) {
      // The upload failed.
} else {
      // The upload succeeded!
}

1387140cookie-checkProgrammgesteuertes Hinzufügen eines WordPress-Beitrags mit Anhang

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy