正如jdm2112所提到的,WordPress提供了save_post 一旦柱子被保存,就会开火的钩子。由于保存帖子时需要运行验证逻辑,因此此挂钩(或其dynamic counterpart) 应该在您的解决方案中使用。至于在验证失败时显示错误消息admin_notices 钩子是完美的选择。
粗略的解决方案可能如下所示:
function filbr_validate_id_meta_field( $post_id ) {
// Skip post revisions
if ( wp_is_post_revision( $post_id ) ) {
return;
}
$id = get_post_meta( $post_id, \'id\', true );
if ( ! filbr_id_unique( $id ) ) {
add_action( \'admin_notices\', \'filbr_invalid_id_error\' );
// Optionally delete invalid meta value
delete_post_meta( $post_id, \'id\' );
}
}
add_action( \'save_post\', \'filbr_validate_id_meta_field\' );
function filbr_id_unique( $id ) {
// ... check uniqueness of provided ID
}
function filbr_invalid_id_error() {
?>
<div class="notice notice-error">
<p><?php _e( \'The ID you entered is not unique\', \'your-text-domain\' ); ?></p>
</div>
<?php
}
您需要对其进行调整,使其按预期工作。
如果你有任何问题,请告诉我!