我试图在wordpress管理员插入新帖子时发送推送通知。
我花了好几个小时在哪里添加我的函数,在做了很多之后,我找到了核心函数wp_insert_post
在…内wp-includes/post.php
该函数返回Post\\u ID,因此我在返回之前添加了自定义脚本:
include \'../push/send_message.php\';
sendNotification($postarr[\'post_title\'],$postarr[\'guid\']);
问题是当我在这里导入这两行时
function wp_insert_post($postarr, $wp_error = false) {
...
if ( $update ) {
do_action(\'edit_post\', $post_ID, $post);
$post_after = get_post($post_ID);
do_action( \'post_updated\', $post_ID, $post_after, $post_before);
}
do_action(\'save_post\', $post_ID, $post);
do_action(\'wp_insert_post\', $post_ID, $post);
include \'../push/send_message.php\';
sendNotification($postarr[\'post_title\'],$postarr[\'guid\']);
return $post_ID;
}
没有发生任何事情,当管理员插入新帖子时,成功页面为空。如果我去掉那条线,一切都好。。非常奇怪。。有人能给我一个正确的方法来做我需要的事情吗?
最合适的回答,由SO网友:s_ha_dum 整理而成
看到你发布的黑客核心代码中的这两个钩子了吗?
do_action(\'save_post\', $post_ID, $post);
do_action(\'wp_insert_post\', $post_ID, $post);
这些是你需要用来做这件事的权利。
function run_on_update_post($post_ID, $post) {
var_dump($post_ID, $post); // debug
include \'../push/send_message.php\';
sendNotification($post[\'post_title\'],$post[\'guid\']);
return $post_ID;
}
add_action(\'save_post\', \'run_on_update_post\', 1, 2);
save_post
每次保存帖子时运行。我不能保证你的功能会正常工作,但你应该能够修改一些东西使其正常工作。看看
var_dump
并相应更改。这个
include
s也可能不起作用,因为它们是相对路径。你可能也必须改变这一点。