获取钩子的当前页面ID

时间:2017-04-12 17:18:43

标签: php wordpress hook

我使用插件Formidable Pro(frm_to_email)中的一个钩子,我绝对需要拥有当前页面的ID(对于高级自定义字段)。由于代码位于function.php,我似乎无法检索它。我该怎么做才能获得这个价值?

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);

3 个答案:

答案 0 :(得分:1)

您应该能够通过url_to_postid()从网址获取该阶段的帖子ID:

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

答案 1 :(得分:0)

您是否尝试过以下任何一种方法:

global $post;
echo $post->ID;

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

或者,如果您知道正在使用表单的页面的ID,则可以将页面ID添加为隐藏表单字段值。因此,例如,如果您有2个页面出现在表单上,​​则创建两个相同的表单,但隐藏字段的值等于给定表单将显示的页面的ID。

答案 2 :(得分:0)

您必须向您的函数添加全局$ post。

https://cdn-images-1.medium.com/fit/c/60/60/foobar.jpg