我需要从ajax
请求回调中获取当前页面ID或名称。最初在加载页面时我发出ajax
个请求。在其回调方法中,我需要获取当前页面ID或名称。我使用了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
});
我接受了action
挂钩的请求。
add_action('wp_ajax_nopriv_notes_select_page', 'Notes::select_page');add_action('wp_ajax_optimal_notes_select_page', 'Notes::select_page');
回调我使用了几个代码,但不起作用。试试1.
public static function select_page(){
global $pagename;
die($pagename);
}
尝试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);
}
尝试3
public static function select_page(){
global $post;
die($post->ID);
}
但遗憾的是,其中任何一个都无法获取当前页面ID
或name
。回调与其他值一起正常工作。
提前谢谢。
答案 0 :(得分:2)
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;
}
你不需要ajax。 将此函数添加到您的代码中。 您现在可以使用以下方式获取页面ID:
var id = get_current_page_id();
答案 1 :(得分:1)
要检索帖子详细信息,您必须自己发送数据
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
}
您可以使用隐藏的框来获取当前的帖子ID,并使用类或ID获取Js文件,或者在您的php文件中编写ajax。
然后你可以通过POST检索
public static function select_page(){
$post_id = $_POST['post_id'];
}
答案 2 :(得分:0)
只需使用get_the_id();功能如下所述。
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
}
答案 3 :(得分:0)
或者
<div id="current_page_id"> <?php get_the_ID(); ?> </div>
或
<body page-id="<?php get_the_ID(); ?>">
现在在jquery中,ajax采取以下
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
});
答案 4 :(得分:0)
有一个解决方案可以解决Wordpress中的问题。在wp_footer
钩子中添加ajax代码,可以检索使用php代码当前页面id并作为ajax值传递。
答案 5 :(得分:0)
您可以通过隐藏字段以下列方式获取帖子/页面ID。此代码将插入模板文件中(然后该值将发送到您的ajax操作挂钩,如上所示):
<?php
echo '<input type="hidden" name="activepost" id="activepost"
value="'.get_the_ID().'" />'
;?>
请查看此参考:https://developer.wordpress.org/reference/functions/get_the_id/