由于“save_post”操作是在发布和更新之后运行的,因此如果没有黑客替代方案,实际上无法验证自定义密钥。
但是,我认为您可以通过按照 Viral 建议的方式使用“save_post”来模仿您想要的功能,而不是在验证错误时中断或取消保存过程,您可以完全删除帖子:
add_action('save_post', 'validate_meta');
function validate_meta($post_id)
{
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return $post_id;
/*USE THIS ONLY IF YOU ARE UTILIZING NONCE FIELDS IN A CUSTOM META BOX
if ( !wp_verify_nonce( $_POST['metabox_nonce'], basename(__FILE__) ) )
return $post_id;*/
/*Use plugin_basename(__FILE__) if this is an actual plugin, rather than
a part of your theme*/
if ( 'page' == $_POST['post_type'] )
{
if ( !current_user_can( 'edit_page', $post_id ) )
return $post_id;
}
else
{
if ( !current_user_can( 'edit_post', $post_id ) )
return $post_id;
}
/*VALIDATE YOUR METADATA HERE HOWEVER YOU LIKE
if(is_valid($_POST['metadata']))
$validated = true;
else
$validated = false;
*/
if(!$validated)
wp_delete_post($post_id, true);
else
return $post_id;
}
Run Code Online (Sandbox Code Playgroud)
使用这种方法唯一需要注意的是它也将在发布和更新上运行。您可能需要考虑添加一项检查,以确保仅删除新发布的帖子,并将更新的帖子回滚到以前的版本,并删除无效的修订版本。
| 归档时间: |
|
| 查看次数: |
3974 次 |
| 最近记录: |