WordPress自定义注释字段 - 验证

时间:2017-06-01 15:44:28

标签: php wordpress

我有一个自定义评论模板,我在WordPress中使用,用户可以留下评论/评级等。我要做的是验证其中一个字段不为空。

这是我的功能:

function website_verify_comment_review() {
        if (empty($_POST['review-stars-input'])) {
            wp_die(esc_html__('Error: Please add a rating with your comment.', 'website'));
    }
}

我在我的functions.php中使用'pre_comment_on_post'钩子,因为看起来我无法在其他任何地方添加此操作而不会无效。

add_action('pre_comment_on_post', 'website_verify_comment_review');

我遇到的问题是,这也是在普通帖子上运行的,这些自定义评论字段不存在,因此错误也会显示在那里。

我需要此功能才能在我的自定义帖子类型上运行过滤器,但它似乎不起作用。在上面的函数中,我尝试检查它不是单个帖子“!is_singular('post')”但这使得它不再适用于我的自定义帖子类型。

也许有人知道什么是错的?为什么这只在我添加functions.php中的动作时才有效?

我也试过调整add_action优先级而没有运气。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果值为null或不存在,

empty()将返回true,因此您可以测试该值是否存在并且为空(请注意):

if ( isset( $_POST['review-stars-input'] ) && empty( $_POST['review-stars-input'] ) ) {
// your error message
}

答案 1 :(得分:0)

function website_verify_comment_review($post_id) {
    if (get_post_type($post_id) == 'Your post type here') {
        if (empty($_POST['review-stars-input'])) {
            wp_die(esc_html__('Error: Please add a rating with your comment.', 'website'));
        }
    }
}
相关问题