2016-08-26 31 views
0

我正在編寫自定義插件。這個插件的功能之一是發送一封電子郵件給用戶,請求反饋我們的員工如何能夠解決用戶的問題。如何爲反饋調查創建虛擬頁面

我不知道這是如何做到的,但我設想能夠發送電子郵件給用戶提供了一個鏈接:

<a href="https://example.com/feedback-survey/?id=... ">Take the Survey<a> 

有人可以給我一些提示(代碼將是巨大的),那會向我展示如何在我的插件中註冊一個頁面/ slug,並在訪問時從我的插件中動態生成?

我寧願不認證。 URI是一次性鏡頭。一旦提交反饋表格feedback-survey/?id=將不再可訪問。它會產生一個「你已經接受了這項調查」。

這個虛擬頁面做什麼的確切邏輯可能並不那麼重要。我可以在那個時候處理邏輯。具體來說,我只想知道如何註冊一個slug/URI,並在訪問該URI時在我的插件中觸發一個函數來呈現頁面/表單。

回答

1

您可以爲調查創建自定義帖子類型。

register_post_type('survey', // POST TYPE NAME 
     array(
       'thumbnail', 
       'labels' => array(
         'name' => __('Surveys'), 
         'singular_name' => __('survey') 
       ), 
       'can_export'   => TRUE, 
       'exclude_from_search' => FALSE, 
       'publicly_surveyable' => TRUE, 
       'menu_icon'   => 'dashicons-format-chat', 
       'survey_var'   => 'survey', 
       'show_ui'    => TRUE, 
       'public' => true, 
       'has_archive' => true, 
       'supports' => array('title', 'editor', 'thumbnail', 'page-attributes', 'excerpt'), 
       'hierarchical' => true, 
       'show_in_menu'  => TRUE, 
       'show_in_nav_menus' => TRUE, 
       'taxonomies' => array('person_type') 
     ) 
); 

然後當調查後創建。 $ thash是一個隨機的帖子名稱,它比show ID更好。並鏈接到這將是yourpage.net/survey/$thash

function insertSurvey($title, $content) { 
    $t = time(); 
    $thash = md5($t); 

    $my_query = array(
     'post_title' => wp_strip_all_tags($title), 
     'post_content' => $content, 
     'post_type' => 'survey', 
     'post_name' => $thash, 
     'post_status' => 'publish', 
     'post_author' => 1 
    ); 
    $data = wp_insert_post($my_query); 
} 

通過電子郵件發給

function contact_form_init() { 
    $name = strip_tags($_POST['name']); 
    $tel = strip_tags($_POST['tel']); 
    $email = strip_tags($_POST['email']); 
    $text = strip_tags($_POST['message']); 


     $subject = 'Subject'; 

     $headers = "From: [email protected] \r\n"; 
     $headers .= "Reply-To: [email protected] \r\n"; 
     $headers .= "MIME-Version: 1.0\r\n"; 
     $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

     $message = '<html><body>'; 
     $message .= '<h1>Title/h1>'; 
     $message .= '<p><strong>Name</strong>: '.$name.'</p>'; 
     $message .= '<p><strong>Phone</strong>: '.$tel.'</p>'; 
     $message .= '<p><strong>Email</strong>: '.$email.'</p>'; 
     $message .= '<p><strong>Message</strong>: '.$text.'</p>'; 
     $message .= '<p>Send on: '.date("F j, Y, g:i a").'</p>'; 
     $message .= '</body></html>'; 

     mail($to, $subject, $message, $headers); 


    exit; 
} 
+0

非常讚賞。所以我錯過的關鍵是需要有一個自定義的職位類型註冊來創建slu。。這對我有很大的幫助。調查結果需要保存爲已有現有帖子類型的元數據,但我認爲我可以處理該問題。我是否會在正確的軌道上說just/survey /可能是端點URI,thash可能在查詢字符串中?另外,我在哪裏創建/調查/頁面html內容(表單)?調查結果將是超級簡單的數據,需要將其作爲元數據保存到現有的自定義帖子類型中。 – rwkiii

+0

是的thash會是你的帖子slu for,對於特定的帖子。關於表單創建?每個調查的形式應該不同?對於每個您只允許完成一次的特定調查,或者您希望允許多個訪問者完成同一個調查頁面? – Beneris

+0

多位訪問者填寫同一頁面,但它引用了他們自己的$ post_id。有了上面的幫助和更多的研究,我能夠得到一個可行的解決方案。謝謝你的幫助! – rwkiii