2010-09-27 36 views
8

Tôi nhận được post_title, post_content và các thứ khác trong $ _REQUEST cũng như tệp hình ảnh. Tôi muốn lưu tất cả những thứ đó dưới dạng một bài đăng trong cơ sở dữ liệu wordpress. Tôi có trên trang của tôiLập trình thêm bài đăng Wordpress với phần đính kèm

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

?> 

Điều này sẽ nhận được tất cả những thứ trong cơ sở dữ liệu như bài nhưng tôi không biết cách thêm tệp đính kèm và bài đăng meta của nó.

Tôi có thể làm như thế nào? Ai có thể giúp tôi? Tôi thực sự bối rối và đã dành vài ngày để giải quyết vấn đề này.

+0

Bạn nên bao gồm tệp wp-load.php thay vì tệp cấu hình. –

Trả lời

8

Để thêm một tập tin đính kèm, sử dụng wp_insert_attachment():

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

VÍ DỤ:

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

Để thêm Meta Data, sử dụng wp_update_attachment_metadata():

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

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

tôi nghĩ rằng nó chỉ là một bản sao dán từ url đó ..... u có thể cho tôi biết làm thế nào tôi có thể sử dụng các biến của tôi trong đó? Nó sẽ tải lên hình ảnh đến thông qua yêu cầu đến wp-content/uploads ?? –

+0

$ post_content chuyển đến post_content, $ post_id bạn nhận được từ bài đăng chèn, v.v ... –

0

Nếu bạn cần tải tệp đính kèm cũng như chèn tệp đính kèm vào cơ sở dữ liệu, bạn nên sử dụng media_handle_upload(), thao tác này sẽ thực hiện tất cả điều đó cho bạn. Tất cả những gì bạn phải làm là cung cấp cho nó chỉ mục của tệp trong mảng $_FILES và ID của bài đăng gốc:

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

if (is_wp_error($attachment_id)) { 
     // The upload failed. 
} else { 
     // The upload succeeded! 
} 
Các vấn đề liên quan