wp_reset_postdata not working

i have this query

add_action('edit_form_after_title', 'get_books');

function get_books($main_post){
    global $post;
    $list = '';

    // print the current post (everything is still fine here)
    print_r($post);

    $args = array(
        'posts_per_page' = '20',
        'post_type'      = array('books')
    );
    $my_query = new WP_Query($args);
    if ($my_query-have_posts()) {
        $list .= 'select name="books_list"';
        while ($my_query-have_posts()) {
            $my_query-the_post();
            // my code
            $list .= 'option value="'.get_the_ID().'"'.get_the_title().'/option';
        }
        $list .= '/select';
        wp_reset_postdata();
    }
    // i try another methods but still same problem.
    wp_reset_postdata();
    $my_query-reset_postdata();
    wp_reset_query();


    // here print the last post in $my_query, not old post or empty post in add new post page
    print_r($post);

    echo $list;
}

but after complete the query he print last post in $my_query

my problem not in print_r exactly (only to show simple explain) but my problem on add new post or edit post page, he show featured image and other infomations of my last post in $my_query

i fix this problem by put $post in another variable before my query and restore it to $post after complete, but i want to know what problem with wp_reset_postdata or what misake i'm making.

Topic wp-reset-query wp-reset-postdata Wordpress

Category Web

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.