最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

metabox - $post->ID incorrect within meta box

programmeradmin1浏览0评论

I have a meta box and I am trying to get the current post id however I am getting the ID of a different post. Is there another way to get the ID?

function global_notice_meta_box() {

    $screens = array( 'avent_event' );

    foreach ( $screens as $screen ) {
        add_meta_box(
            'global-notice',
            __( 'Event Attendees', 'sitepoint' ),
            'global_notice_meta_box_callback',
            $screen
        );
    }
}

add_action( 'add_meta_boxes', 'global_notice_meta_box' );


function global_notice_meta_box_callback( $post ) {

    wp_reset_postdata();

    // 1st Method - Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object
    global $wpdb;
    $results = $wpdb->get_results( 'SELECT * FROM avent_event_guestlist WHERE event_id = '.$post->ID, OBJECT );

    print_r($post);
}

I have a meta box and I am trying to get the current post id however I am getting the ID of a different post. Is there another way to get the ID?

function global_notice_meta_box() {

    $screens = array( 'avent_event' );

    foreach ( $screens as $screen ) {
        add_meta_box(
            'global-notice',
            __( 'Event Attendees', 'sitepoint' ),
            'global_notice_meta_box_callback',
            $screen
        );
    }
}

add_action( 'add_meta_boxes', 'global_notice_meta_box' );


function global_notice_meta_box_callback( $post ) {

    wp_reset_postdata();

    // 1st Method - Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object
    global $wpdb;
    $results = $wpdb->get_results( 'SELECT * FROM avent_event_guestlist WHERE event_id = '.$post->ID, OBJECT );

    print_r($post);
}
Share Improve this question edited Oct 8, 2017 at 16:20 mmm 3,8193 gold badges16 silver badges22 bronze badges asked Oct 8, 2017 at 14:22 Ben HBen H 4036 silver badges20 bronze badges 2
  • is something changing if you comment the call to wp_reset_postdata ? – mmm Commented Oct 8, 2017 at 14:56
  • No with or without it still returns the incorrect post id – Ben H Commented Oct 8, 2017 at 16:20
Add a comment  | 

1 Answer 1

Reset to default 1

Use the global variable $post. It is not specific to the Metabox, which is really just a portal for display.

 global $post;
 $PostId     = $post->ID;   
发布评论

评论列表(0)

  1. 暂无评论