我目前正在开发wordpress插件。该插件包括一个数据库表,每当使用该帖子的数据创建、编辑或删除帖子时,该表都会更新。此表中的一列是“post\\u status”,我需要随时用帖子的状态更新它。现在我正在使用以下代码:
function filter_transition_post_status( $new_status, $old_status, $post ) {
global $post;
global $wpdb;
$wpdb->query(" UPDATE my_table SET post_status=\'$new_status\' WHERE post_id=$post->ID");
}
add_action(\'transition_post_status\', \'filter_transition_post_status\', 10, 3);
当我在“编辑帖子”页面中更改帖子状态时,上面的代码工作正常。当我更改帖子的状态时,表中也会发生更改。但是,当我使用“快速编辑”模式更改帖子的状态或批量更改多篇帖子时,代码不起作用。我的表中没有发生更改。如果您能帮助解决此问题,我们将不胜感激。非常感谢。
最合适的回答,由SO网友:Stephen Harris 整理而成
您不想引用全局$post
, 但这篇文章是作为论点之一给你的。您只需删除global $post
;
还要记住清理输入和前缀函数名称。
function wpse50651_filter_transition_post_status( $new_status, $old_status, $post ) {
global $wpdb;
$wpdb->query(
$wpdb->prepare(
"UPDATE my_table SET post_status=%s WHERE post_id=%d",
$new_status,$post->ID
)
);
}
add_action(\'transition_post_status\', \'wpse50651_filter_transition_post_status\', 10, 3);