Wordpress get current page name or id in ajax request callback

I need to get the current page id or name from ajax

a callback request. Initially on page load, I made a request ajax

. In the callback method, I need to get the current page id or name. I used the following code to request ajax

.

$.ajax({
        type: "POST",
        url: my_site.home_url + '/wp-admin/admin-ajax.php',
        data: {
            action: "notes_select_page"
        },
        dataType: "html",
        success: function (Response) {
            if (Response == "OK") {
                Notes.renderBoardList();
            } else {

            }
        },
        async: true
    });

      

I received a request from action

hook.

add_action('wp_ajax_nopriv_notes_select_page', 'Notes::select_page');add_action('wp_ajax_optimal_notes_select_page', 'Notes::select_page');

      

And the callback I used several codes but didn't work. Try 1.

public static function select_page(){
    global $pagename;
    die($pagename);
}

      

Try 2

public static function select_page(){
    global $wp_query;
    $pagename = get_query_var( 'pagename' );
    if ( !$pagename) {
        $post = $wp_query->get_queried_object();
        $pagename = $post->post_name;
    }
    die($pagename);
}

      

Try 3

public static function select_page(){
    global $post;
    die($post->ID);
}

      

But unfortunately any of them doesn't work to get the current page ID

or name

. Callback works great with other values. Thanks in advance.

+3


source to share


6 answers


To get information about a message, you must send the data yourself

data:{
    action: "notes_select_page",
    post_id: current_post_id, //current_post_id should either parsed from DOM or you can write your ajax in PHP file
}

      

You can use hidden field for current post id and get in Js file using class or id, or write ajax in php file itself.



Then you can get via POST

public static function select_page(){
    $post_id = $_POST['post_id'];

}

      

+1


source


function get_current_page_id() {
    var page_body = $('body.page');

    var id = 0;

    if(page_body) {
        var classList = page_body.attr('class').split(/\s+/);

        $.each(classList, function(index, item) {
            if (item.indexOf('page-id') >= 0) {
                var item_arr = item.split('-');
                id =  item_arr[item_arr.length -1];
                return false;
            }
        });
    }
    return id;
}

      

You don't need ajax for this. Add this function to your code. Now you can get the page id using:



var id = get_current_page_id();

      

+1


source


Just use get_the_id (); as described below.

data:{
    action: "notes_select_page",
    post_id: <?php echo get_the_id(); ?>, //current_post_id should either parsed from DOM or you can write your ajax in PHP file
}

      

0


source


  • First enter this page using this function.

or

    <div id="current_page_id"> <?php get_the_ID(); ?> </div>

      

or

      <body page-id="<?php get_the_ID(); ?>">

      

Now in jquery ajax do the following

var page_id = $('current_page_id').html();

      

OR

var page_id = $('body').attr("page-id");


 $.ajax({
    type: "POST",
    url: my_site.home_url + '/wp-admin/admin-ajax.php',
    data: {
        action: "pageid="+page_id,
    },
    dataType: "html",
    success: function (Response) {
        if (Response == "OK") {
            Notes.renderBoardList();
        } else {

        }
    },
    async: true
});

      

0


source


There is a solution to solve the problem in Wordpress. Adding ajax code to the wp_footer

hook, where using the id of the current page of the php code, you can get and pass the ajax value.

0


source


You can get the post / page id as an alternative to the hidden field as follows. This code is inserted into the template file (and then the value will be sent to your ajax action hook as above):

    <?php
    echo '<input type="hidden" name="activepost" id="activepost" 
    value="'.get_the_ID().'" />'
    ;?>

      

Check it out for reference: https://developer.wordpress.org/reference/functions/get_the_id/

0


source







All Articles