2011-04-28 57 views
1

當我添加函數「wp_insert_post()」 - 中斷頁面。 在數據庫「$ pages」數組中插入多次相同的數據......僅在中斷頁面時停止。 爲什麼?wordpress:「wp_insert_post()」 - 中斷頁面

感謝;]

add_action('save_post', 'save_data_all'); 

function save_data_all($post_id) 
{ 
    $pages = array(
     'post_title' => 'title', 
     'post_content' => 'This is my post.', 
     'post_status' => 'publish', 
     'post_type' => 'page' 
    ); 

    wp_insert_post($pages); 

    if(get_post_meta($post_id, 'l_news', true)) 
     update_post_meta($post_id, 'l_news', $ser); 
    else 
     add_post_meta($post_id, 'l_news', $ser, false); 

} 
+0

我不明白是什麼問題。你能澄清嗎? – 2011-04-28 17:40:43

回答

0

如果你得到一個PHP應用程序中的空白頁,這意味着發生了最有可能致命錯誤。有時也會引發異常,但不在try {} catch() {}區塊中。

就你而言,你需要弄清楚你的PHP error_log所在的位置。找出最簡單的方法是用下面的代碼創建一個.php頁面:<?php phpinfo();

如果指令是,請設置它。這是你在你的php.ini中做的事情。有時webhosters也爲您提供一個界面來執行這些設置。但是你沒有分享那麼多的信息。

因此,無論如何,找到error_log設置,然後打開日誌文件,並調查發生的錯誤。它應該在文件末尾或其附近。

如果您需要更多幫助調試錯誤,請分享錯誤消息並留下評論。

0

update_post_meta不知道$ post_id,直到保存該文章後。在有條件的情況下,它總是會返回false。

您需要在插入帖子時定義新的$ post_id。試試這個:

add_action('save_post', 'save_data_all'); 

function save_data_all() 
{ 
    $pages = array(
     'post_title' => 'title', 
     'post_content' => 'This is my post.', 
     'post_status' => 'publish', 
     'post_type' => 'page' 
    ); 

    $post_id =wp_insert_post($pages); 

    if(get_post_meta($post_id, 'l_news', true)) 
     update_post_meta($post_id, 'l_news', $ser); 
    else 
     add_post_meta($post_id, 'l_news', $ser, false); 

} 
0

「」$ pages「數組插入多次相同的數據......只有在中斷頁面時才停止,爲什麼?

這是導致遞歸,因爲'save_post'鉤子是在wp_insert_post()函數中觸發的,所以它會一遍又一遍地發生!

也被稱爲wp_update_post以及(wp_update_post實際使用wp_insert_post內部)...