2010-09-27 3 views
8

Otrzymuję post_title, post_content i inne rzeczy w $ _REQUEST, a także plik obrazu. Chcę to wszystko zapisać jako wpis w bazie danych wordpress. Mam na mojej stronieProgramowo dodaje post Wordpress z załącznikiem

<?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); 

?> 

Pozwoli to uzyskać wszystkie rzeczy w bazie danych jako słupek, ale nie wiem jak dodać załącznik i jego postu meta.

Jak mogę to zrobić? Czy ktoś może mi pomóc? Jestem bardzo zdezorientowany i spędziłem kilka dni próbując rozwiązać ten problem.

+0

Powinieneś być w tym wp-load.php zamiast pliku konfiguracyjnym. –

Odpowiedz

8

do dodawania załącznika, zastosowanie wp_insert_attachment():

http://codex.wordpress.org/Function_Reference/wp_insert_attachment

PRZYKŁAD:

<?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); 
?> 

dodać Meta danych, wykorzystywanie wp_update_attachment_metadata():

http://codex.wordpress.org/Function_Reference/wp_update_attachment_metadata

<?php wp_update_attachment_metadata($post_id, $data) ?> 
+1

Myślę, że to tylko kopiuj wklej z tego url ..... możesz mi powiedzieć, w jaki sposób mogę używać moje zmienne w nim? Czy przesłać obraz przychodzący z prośbą do wp-content/uploads? –

+0

$ post_content przechodzi do post_content, $ post_id dostajesz z wstawki do wpisu itp. ... –

0

Jeśli chcesz przesłać załącznik, a także wstawić go do bazy danych, powinieneś użyć media_handle_upload(), który zrobi to wszystko za Ciebie. Wszystko co musisz zrobić, to dać mu indeks pliku w tablicy $_FILES i identyfikator wątku nadrzędny:

$attachment_id = media_handle_upload('image', $post_id); 

if (is_wp_error($attachment_id)) { 
     // The upload failed. 
} else { 
     // The upload succeeded! 
}