我使用插件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);
答案 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