我有一个插件,它在upvote框前面加了一个the_content
通过AJAX将数据发送回主插件PHP文件,并在成功时调用函数更新数据库值。
以下是来自AJAX的PHP回调:
function update_parlay_points() {
//Update Parlay Points field on database with points from Post request.
//global $post;
//$post_id = $post->ID;
$post_id = get_the_ID();
$points = $_POST[\'score\'];
$update_points = "UPDATE wp_posts
SET parlay_points = \'$points\'
WHERE id = $post_id";
var_dump( $post_id );
echo $update_points;
global $mysqli;
$mysqli->query( $update_points ) or die( "Query failed" );
wp_die();
}
在Chrome的开发工具中,这给了我:
bool(false)UPDATE wp\\u posts SET parlay\\u points=“26”,其中id=查询失败
正如你所看到的,我试图声明$post
变量为全局变量,用于说明由于处于循环外部而导致的故障。触发AJAX请求的内容的前缀为the_content
, 因此,我不确定是否需要以某种方式再次“进入”循环。我试过了if ( have_posts() )
和if ( is_single() )
之前get_the_ID()
没有成功。总的来说,这个循环让我很困惑。
我还尝试访问$post->ID
从行动挂钩the_post
. 奇怪的是,我能够成功地回显当前帖子的ID,但无法将其存储在全局范围的变量中。
$post_id = Null;
add_action( \'the_post\', \'wp_store_post_info\' );
function wp_store_post_info() {
//Set current post as global variable.
global $post;
global $post_id;
$post_id = $post->ID;
echo $post_id;
}
function update_parlay_points() {
//...
global $post_id;
//Do stuff with the $post_id...
}
这也不起作用:
$GLOBALS[\'post_id\'] = $post->ID;
我确信正在调用上述函数,因为
$post_id
正在得到回应。但是,当我单击向上投票按钮时,我得到:
NULL UPDATE wp\\u posts SET parlay\\u points=“28”,其中id=查询失败