我的functions.php文件中有一个函数,我需要当前的帖子ID。
我试过这样:
global $wp_query;
$currentID = $wp_query->post->ID;
echo '<pre>';
print_r($currentID);
echo '</pre>';
但似乎没有用,因为它说:
尝试获取非对象的属性
编辑:functions.php中的整个功能
add_filter( 'gform_pre_render_1', 'populate_posts' );
add_filter( 'gform_pre_validation_1', 'populate_posts' );
add_filter( 'gform_pre_submission_filter_1', 'populate_posts' );
add_filter( 'gform_admin_pre_render_1', 'populate_posts' );
function populate_posts( $form ) {
global $wp_query;
foreach ( $form['fields'] as &$field ) {
if ( $field->type != 'select' || strpos($field['cssClass'], 'booking-option') === false ) {
continue;
}
$currentID = $wp_query->post->ID;
var_dump($wp_query->post);
$choices[] = array( 'text' => $price, 'value' => $price );
$field->placeholder = '0';
$field->choices = $choices;
}
return $form;
}
任何人都可以帮助我
非常感谢!
答案 0 :(得分:1)
在你的功能中添加
global $post;
echo $post->ID;
答案 1 :(得分:0)
要访问帖子ID,您必须在the loop
之内否则,您必须修改您的函数以接受post id作为参数,并挂钩在哪里安全获取post id,如下所示:
add_action('template_redirect', function() {
if (is_single())
your_function(get_queried_object_id());
}
});
function your_function($id){
//Do what you want
}
一些参考文献:
作为一个说明,对于未来,我认为如果您将这些问题发布到http://wordpress.stackexchange.com社区
更合适编辑:
现在您发布了整个代码,我发现您正在使用重力形式(之前没有提到)。
这是一个完全不同的问题。 您必须从Entry对象中获取重力形式将传递给函数的post_id
https://www.gravityhelp.com/documentation/article/entry-object/
答案 2 :(得分:-1)
您必须将ID作为参数传递给function.php中的函数,或者您可以在会话中保存ID
答案 3 :(得分:-1)
获取当前帖子ID
可以使用
将ID存储为变量<?php $postid = get_the_ID(); ?>
打印
<?php echo $postid; ?>
按功能
function get_the_ID() {
$post = get_post();
return ! empty( $post ) ? $post->ID : false;
}
供参考: click here
答案 4 :(得分:-2)
如果要打印ID,请使用
the_ID();
如果您想存储它,请使用
$ postId = get_the_ID();
在循环中使用它
希望这有帮助
保重和快乐编码