我终于想出了一个解决方案,使用查询变量将状态消息传递到下一个页面,以便在post_updated_messages
. 这里是我所做工作的简化版本,为了简单起见,更改了所有函数名,以关注手头的问题;
首先,为$_POST
var;
function my_custom_function($post_id) {
$response = ping_other_service_and_get_confirmation($post_id);
$_POST[\'status_response\'] = $response[\'body\'];
}
add_action( \'post_updated\', \'my_custom_function\');
然后,设置该值后,我将编辑后页面重定向到同一URL,并添加一个具有我需要的值的查询字符串;
function pass_status_response($location){
if (isset($_POST[\'status_response\'])) {
$location = esc_url_raw(add_query_arg(\'status_response\', $_POST[\'status_response\'], $location));
}
return $location;
}
add_filter(\'redirect_post_location\', \'pass_status_response\');
最后,我将该值附加到
post_updated_messages
.
function add_status_message($messages) {
if ($_GET[\'status_response\']) {
$post = get_post();
$post_type = get_post_type($post);
foreach ($messages[$post_type] as &$msg) {
$msg = $msg . \'Status: \' . $_GET[\'status_response\'];
}
}
return $messages;
}
add_filter(\'post_updated_messages\', \'add_status_message\');
这似乎工作得相当好,然而,这是非常实验性的。如果有人对我如何改进此解决方案有任何反馈,我将不胜感激。谢谢