WordPress在functions.php函数中获取自定义帖子类型的当前帖子ID

时间:2016-04-27 08:48:27

标签: php wordpress

我的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;
}

任何人都可以帮助我

非常感谢!

5 个答案:

答案 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();

在循环中使用它

希望这有帮助

保重和快乐编码