2017-03-07 19 views

回答

0

Haninder的答案有一個很好的開始,但不會根據OP將數據存儲在數據庫中。

這是開始變得棘手的地方,因爲有很多選擇。

您可以輕鬆地將數據存儲在各個位置,但沒有一個在語義上是正確的,或者在很長一段時間內都可以維護。

在選項表中的單個選項

function save_request($data){ 

    $opts = get_option('contact_requests'); 

    if(! $opts || ! is_array($opts)){ 
     $opts = array(); 
    } 

    $opts[] = $data; 

    update_option('contact_requests', $opts); 

} 

這將意味着一個緩慢的要求保存和失敗擺在首位數據庫的點,幾百個聯繫人的請求後,也diaplying和排序數據會變得棘手。

最好的方法是真的有一個自定義的數據庫表,但有很多事情要考慮走這條路。

https://code.tutsplus.com/tutorials/custom-database-tables-creating-the-table--wp-28124

自定義文章類型

這是我會怎麼解決這個問題。

也許你可以創建一個自定義的帖子類型,說「contact_requests」,並創建一個帖子與一些帖子元代表一個聯繫請求。

這樣你就可以在管理中獲得整潔的列表,並且可以根據需要快速輕鬆地對數據進行排序和訪問。通過成千上萬的條目,這將是穩定和快速的。

function save_request($data){ 

    $content = ''; 

    foreach($data as $key => $name){ 
     $content .= sprintf('%s - %s' . PHP_EOL, $key, $name); 
    } 

    $post_data = array(
     'post_title' => 'Contact Request ' . esc_html($data['name']), 
     'post_content' => $content, 
     'post_type' => 'contact_requests' 
    ); 
    $post_id = wp_insert_post($post_data); 

    //Add Post Meta Here 
    add_post_meta($post_id, 'contact_name', esc_html($data['name'])); 
    add_post_meta($post_id, 'contact_email', esc_html($data['email'])); 
    add_post_meta($post_id, 'contact_message', esc_html($data['message'])); 

    return $post_id; 

}