2017-04-12 220 views
1

我使用來自插件Formidable Pro(frm_to_email)的鉤子,我絕對需要擁有當前頁面的ID(對於高級自定義字段)。由於代碼位於function.php,我似乎無法檢索它。我能做些什麼來獲得這個價值?獲取鉤子的當前頁面ID

function custom_set_email_value($recipients, $values, $form_id, $args){ 
    global $post; 
    $profil_obj = get_field('profil_obj', $post->ID); // If I put the ID directly (10 for example), it works 

    if($form_id == get_field('popup_form_id', 'option') && $args['email_key'] == get_field('popup_email_id', 'option')){ 
     if($profil_obj) { 
      foreach($profil_obj as $post) { 
       setup_postdata($post); 
       $recipients[] = get_field('profil_email', $post->ID); 
      } 
     } 
     wp_reset_postdata(); 
    } 
    return $recipients; 
} 
add_filter('frm_to_email', 'custom_set_email_value', 10, 4); 

回答

1

你應該能夠在那個階段從URL獲得那個職位ID,與url_to_postid()

<?php 
$scheme = (!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] === "off") ? "http" : "https"; 
$url  = "$scheme://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
$post_id = url_to_postid($url); 
+0

這很好用!謝謝! – meneldil

0

您是否嘗試以下兩種方法之一:

global $post; 
echo $post->ID; 

global $wp_query; 
echo $wp_query->post->ID; 

或者,如果你知道你正在使用表單的頁面的ID,您可以添加頁面ID作爲隱藏的表單字段值。因此,例如,如果您有兩個頁面出現在表單上,​​您可以創建兩個完全相同的表單,但是其隱藏字段的值等於給定表單所顯示頁面的ID。

+0

嗨,既不是兩種解決方案的工作很遺憾。關於蒙面字段的想法,爲什麼不呢,我必須看看我是否陷入了同樣的問題,因爲我會使用另一個鉤子:我無法複製表單,頁面太多。感謝您的搜索路徑。 :) – meneldil

0

您必須將全局$ post添加到您的函數中。

function custom_set_email_value($recipients, $values, $form_id, $args){ 
    global $post; 
    $profil_obj = get_field('profil_obj', $post->ID); // If I put the ID directly (10 for example), it works 

    if($form_id == get_field('popup_form_id', 'option') && $args['email_key'] == get_field('popup_email_id', 'option')){ 
     if($profil_obj) { 
      foreach($profil_obj as $post) { 
       setup_postdata($post); 
       $recipients[] = get_field('profil_email', $post->ID); 
      } 
     } 
     wp_reset_postdata(); 
    } 
    return $recipients; 
} 
add_filter('frm_to_email', 'custom_set_email_value', 10, 4); 
+0

嗨,我忘了在我的示例代碼中指定它。 這不幸的是不起作用。 – meneldil