2013-07-12 4 views
3

Je voudrais créer un post depuis le début de mon site wordpress.wordpress wp_insert_post & wp_update_post

Lorsque des personnes ajoutent des posts avec le même post_title, je souhaite que ce post soit mis à jour plutôt que de créer un nouveau post.

i ont les éléments suivants:

if (!get_page_by_title($post_title, 'OBJECT', 'post')){ 
$my_post = array(
    'post_title' => $post_title, 
    'post_content' => $post_content, 
    'post_status' => 'publish', 
    'post_author' => $post_author, 
    'post_category' => $post_categories 
); 

wp_insert_post($my_post); 

} 

else { 

$page = get_page_by_title($post_title); 
$page_id = $page->ID; 

$my_post = array(

    'ID' => $page_id, 
    'post_title' => $post_title, 
    'post_content' => $post_content, 
    'post_status' => 'publish', 
    'post_author' => $post_author, 
    'post_category' => $post_categories 
); 

wp_update_post($my_post); 

} 

les travaux ci-dessus bien jusqu'à ce que le titre du message est le même. Il sera toujours dupliqué dans la base de données et ne considérera même pas l'instruction "else".

Est-ce que ce qui précède a l'air correct, ou est-ce que je fais quelque chose de mal?

Répondre

8

si vous utilisez le empty chèque pour le tableau

S'il vous plaît être conscient qu'il obtient le premier élément après/page dans la base de données même si le poste est saccagé.

$check_title=get_page_by_title($post_title, 'OBJECT', 'post'); 

//also var_dump($check_title) for testing only 

if (empty($check_title)){ 
$my_post = array(
    'post_title' => $post_title, 
    'post_content' => $post_content, 
    'post_status' => 'publish', 
    'post_author' => $post_author, 
    'post_category' => $post_categories 
); 

wp_insert_post($my_post); 

} 

else { 


$my_post = array(

    'ID' => $check_title->ID, 
    'post_title' => $post_title, 
    'post_content' => $post_content, 
    'post_status' => 'publish', 
    'post_author' => $post_author, 
    'post_category' => $post_categories 
); 

wp_update_post($my_post); 

} 
+0

parfait! merci dianuj! – danyo

Questions connexes