'how to get the current page id in wordpress using jquery
how to get a page id in wordpress using jquery alone.I am planing to change some styles of a page using a custom script for which i need to know page id.
Solution 1:[1]
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;
}
Add this function to your code. You can now get the page id by using:
var id = get_current_page_id();
Solution 2:[2]
Use wp_localize_script.
function my_custom_vars() {
global $wp_query;
$vars = array(
'postID' => $wp_query->post->ID,
);
wp_localize_script( 'myvars', 'MyScriptVars', $vars );
}
add_action ('wp_enqueue_scripts', 'my_custom_vars');
You can use the vaiables in your scripts this way..
<script type="text/javascript">
var MyPostID = MyScriptVars.postID;
</script>
Solution 3:[3]
If you want to get the current page id in jQuery alone you can do it in following steps:
- First make hidden input or hidden HTML tag and add the current page id in it by id of the element:
c_pageidand the valueget_the_ID(); - In your jQuery file you can get this value by id like
var pageId=$("#c_pageid").val();
This may solve your problem.
Solution 4:[4]
$(document).ready(function() {
if ($("body").hasClass("page-id-3202")) {
// code here
}
});
Solution 5:[5]
The best way to do this is by adding global javascript variables via PHP.
To do this first add the following script to your page.php template file:
<script>
var pageId = <?php echo isset($posts[0]) ? $posts[0]->ID : 'null'; ?>;
</script>
Now in in your javascript code you are able to use this global variable like this.
<script>
if(pageId !== undefined && pageId) {
// do some code based on pageId
}
</script>
You can use this same technique to use other WordPress variables in javascript.
Solution 6:[6]
var pageId="<?php echo get_the_ID(); ?>"
Use the above line in your script
Solution 7:[7]
var current_page_id = get_current_page_id();
function get_current_page_id() {
var page_body = $('body.page');
var page_id = '';
if(page_body) {
var classList = page_body.attr('class').split(/\s+/);
$.each(classList, function(index, item) {
if (item.indexOf('page-id') >= 0) {
page_id = item;
return false;
}
});
}
return page_id;
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Abhik |
| Solution 3 | DᴀʀᴛʜVᴀᴅᴇʀ |
| Solution 4 | Tyler2P |
| Solution 5 | Wim Mostmans |
| Solution 6 | Srividhya |
| Solution 7 |
