2009-11-03 3 views

ответ

28

Вы можете использовать объект Post:

// Create post object 
    $my_post = array(); 
    $my_post['post_title'] = 'My post'; 
    $my_post['post_content'] = 'This is my post.'; 
    $my_post['post_status'] = 'publish'; 
    $my_post['post_author'] = 1; 
    $my_post['post_category'] = array(8,39); 

// Insert the post into the database 
    wp_insert_post($my_post); 

Более подробную информацию найденную here.

+0

И какие файлы я должен включить? Поскольку я хочу сделать отдельную панель администратора для wordpress – Uffo

+6

BTW, если вы хотите протестировать это, создайте файл «test.php» в корне вашего блога и используйте эту строку перед этим кодом: require ('./ wp- блог-header.php '); – Volomike

+2

Категория должна быть массивом идентификаторов категорий. Это нелегко получить, особенно если у вас нет сообщений, связанных еще с категориями. Исправление присвоения категории было следующим: $ sCategory = 'Test'; $ asPost ['post_category'] = array ($ wpdb-> get_var ("SELECT term_id FROM $ wpdb-> terms WHERE name = '$ sCategory'", 0,0)); – Volomike

13

Ваш вопрос задает вопрос о том, как вставить новое сообщение в WordPress с помощью SQL. Если вы действительно хотели это сделать, взглянув на таблицы базы данных «wp» и сделайте стандартный INSERT - это не будет сложно.

Но я бы сильно рекомендуем делать это - даже если вы хотите создать отдельную панель администратора за пределами нормального WP-при условии, один, вы должны использовать core functions/API, которые они предоставляют. Например, функция wp_insert_post - это то, что вы хотите использовать.

Я считаю, что вы можете использовать/загрузить эти функции, включив /wp-load.php.

+2

Я несколько новичок в Wordpress, и мне интересно, почему вы рекомендуете использовать базовую SQL-вставку? – ssergei

+1

+1 для ссылки на функцию wp_insert_post и сведения о файле для включения для автономных скриптов –

+1

@ssergei, потому что Wordpress предоставляет вам API. – shankshera

6

Я начал с экспорта таблицы «wp_post», чтобы увидеть структуру, а затем скопировал первый раздел и написал seccond;

1: Начните с переменной, которую можно использовать для вставки заявления ($ SQL)

$sql = "INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES "; 

2: Я взял контент, который я хотел вставить, из другой таблицы - но вы можете просто установить переменных либо внутри или за пределами вашего заявления просто установить переменную, что вы хотите -

$sql .= "(' ','".$post_author."',"."'".$post_date."',"."'".$post_date_gmt."',"."'".$post_content."',"."'".$post_title."',"."'".$post_excerpt."',"."'".$post_status."',"."'".$comment_status."',"."'".$ping_status."',"."'".$posd_password."',"."'".$post_name."',"."'".$to_ping."',"."'".$pinged."',"."'".$post_modified."',"."'".$post_modified_gmt."',"."'".$post_content_filtered."',"."'".$post_parent."',"."'".$guid."',"."'".$menu_order."',"."'".$post_type."',"."'".$post_mime_type."',"."'".$comment_count."'),"; 

После этого используйте ваш стандартный запрос:

$res = mysql_query($sql); if($res): print 'Successful Insert'; else: print 'Unable to update table'; endif; 
+2

Это не сработает, потому что ни одна категория не была назначена для сообщения, и поэтому она не будет отображаться правильно ... –

Смежные вопросы