SO网友:Frank P. Walentynowicz
简单的回答是:你不能。
代码很好,但逻辑上有缺陷。wp_head
操作设置得太晚。标头已发送,因此wp_head
永远不会开火!下面的代码将证明两点。首先:save_post
将同时在管理页面和前端启动。第二:很容易防止回调函数中出现无限循环。
在里面functions.php
:
function saveCustomField($post_id) {
// to prevent an infinite loop
remove_action(\'save_post\', \'saveCustomField\', 10);
// to prove that function was called
error_log(\'I am here to add action\');
add_action(\'wp_head\', \'add_meta_tag\');
}
add_action(\'save_post\', \'saveCustomField\');
function add_meta_tag(){
error_log(\'TEST\');
//echo "TEST";
}
在我的页面模板(前端)中:
wp_update_post(array(\'ID\' => 79, \'post_title\' => \'My Current Test\',));
在error\\u日志中:
[19-Oct-2017 02:57:08 UTC] I am here to add action
我的帖子标题已经更新,
save_post
被解雇了
wp_head
没有。