2009-11-03 5 views

Répondre

28

Vous pouvez utiliser l'objet 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); 

Plus d'info trouvée here.

+0

Et quels fichiers dois-je inclure? Parce que je veux faire un panneau d'administration séparé pour wordpress – Uffo

+6

BTW, si vous voulez tester cela, créez un fichier "test.php" à la racine de votre blog et utilisez cette ligne avant ce code: require ('./ wp- blog-header.php '); – Volomike

+2

La catégorie doit être un tableau d'ID de catégorie. Ce n'est pas facile à obtenir, surtout si vous n'avez pas encore d'articles associés à des catégories. Le correctif sur l'affectation des catégories était le suivant: $ sCategory = 'Test'; $ asPost ['post_category'] = tableau ($ wpdb-> get_var ("SELECT term_id FROM $ wpdb-> termes WHERE name = '$ sCategory'", 0,0)); – Volomike

13

Votre question vous demande comment insérer un nouveau message dans WordPress en utilisant SQL. Si vous voulez vraiment faire cela, jetez un oeil aux tables de base de données "wp" et faites un INSERT standard - ce ne serait pas difficile.

Mais je fortement recommandent de ne pas faire cela - même si vous voulez créer un tableau de bord d'administration séparée à l'extérieur de la normale à condition WP, vous devez utiliser le core functions/API qu'ils fournissent. Par exemple, la fonction wp_insert_post est ce que vous voulez utiliser.

Je crois que vous pouvez utiliser/charger ces fonctions en incluant /wp-load.php.

+2

Je suis un peu nouveau à Wordpress et je me demande pourquoi vous recommandez de ne pas utiliser un insert SQL de base? – ssergei

+1

+1 pour le lien vers la fonction wp_insert_post et les détails du fichier à inclure pour les scripts autonomes –

+1

@ssergei car Wordpress vous fournit une API. – shankshera

6

J'ai commencé par exporter la table "wp_post" juste pour voir la structure - puis copié la première section et écrit le seccond;

1: Commencez par une variable que vous pouvez utiliser pour votre instruction d'insertion ($ 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: Je pris le contenu que je voulais insérer, d'une autre table - mais vous pouvez simplement régler la les variables soit à l'intérieur ou à l'extérieur de votre déclaration que vient définir la variable à ce que vous désirez -

$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."'),"; 

Après cela, utilisez votre requête standard:

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

Cela ne fonctionnera pas, car aucune catégorie n'a été affectée à la publication, et donc elle ne sera pas affichée correctement ... –