【问题标题】:WordPress Custom Comment Field - ValidationWordPress 自定义评论字段 - 验证
【发布时间】:2017-06-01 15:44:27
【问题描述】:

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

这是我的功能:

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 优先级,但没有成功。

谢谢!

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    empty() 如果值为 null 或不存在,将返回 true,所以也许您可以测试该值是否存在并且为空(只是一个想法):

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

    【讨论】:

      【解决方案2】:
      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'));
              }
          }
      }
      

      【讨论】:

      • 您好,欢迎来到 stackoverflow,感谢您的回答。虽然这段代码可能会回答这个问题,但您是否可以考虑添加一些解释来说明您解决了什么问题,以及您是如何解决的?这将有助于未来的读者更好地理解您的答案并从中学习。
      猜你喜欢
      • 1970-01-01
      • 2012-02-19
      • 2013-07-27
      • 2012-12-17
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      相关资源
      最近更新 更多