2010-09-27 15 views
8

Obtengo post_title, post_content y otras cosas en $ _REQUEST así como también un archivo de imagen. Quiero guardar todo eso como una publicación en la base de datos de WordPress. Tengo en mi páginaAgregar mediante programación la publicación de Wordpress con el archivo adjunto

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

?> 

Esto hará que todas las cosas en la base de datos como entrada, pero no sé cómo agregar el archivo adjunto y su posterior meta.

¿Cómo puedo hacer eso? Alguien puede ayudarme? Estoy realmente confundido y he pasado unos días tratando de resolver esto.

+0

Debe estar incluyendo el wp-load.php en lugar de archivo de configuración. –

Respuesta

8

Para añadir un archivo adjunto, el uso wp_insert_attachment():

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

Ejemplo:

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

Para añadir Meta Data, el uso wp_update_attachment_metadata():

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

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

Creo que es solo una copia pegada de esa url ..... ¿me pueden decir cómo puedo usar mis variables en ella? ¿Subirá la imagen que viene a través de la solicitud al wp-content/uploads? –

+0

$ post_content va a post_content, $ post_id que obtienes del post insert, etc ... –

0

Si necesita cargar el archivo adjunto y también insertarlo en la base de datos, debe usar media_handle_upload(), que hará todo eso por usted. Todo lo que tiene que hacer es darle el índice del archivo de la matriz $_FILES y el ID del parent post:

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

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