WP自定义评论字段仅在某些页面上


WP custom comment field only on certain page

我在一个小插件的帮助下,在我的wordpress页面的评论部分添加了一个额外的字段,基于一个教程https://www.smashingmagazine.com/2012/05/adding-custom-fields-in-wordpress-comment-form/。

我只需要一个字段(邮政编码)。

插件工作得很好,但它在每个页面上添加了自定义字段。我只想把它放在一个特定的页面上。

我试图将所有插件代码包装成一个函数,在特定页面上加载:

add_action('template_redirect', 'load-on-certain-page');
function load-on-certain-page(){
        if ( is_page(23) ) {
        //Complete Plugin Code
    }
}

基本上可以工作,但是检查空字段不再工作了。

add_filter( 'preprocess_comment', 'verify_comment_meta_data' );
function verify_comment_meta_data( $commentdata ) {
    if (empty( $_POST['title'] ) )
    wp_die( __( 'Fehler: Bitte geben Sie Ihre Postleitzahl ein.' ) );
    return $commentdata;
}

如果我从load-on-certain-page()函数中排除字段检查,它会检查所有字段,所以没有解决方案。我还尝试在if语句(is_page())中添加额外的条件,但这也不起作用。

你能指出我到正确的方向如何使我的插件功能只在特定的页面上工作?什么是"最佳实践"呢?

谢谢!

你可以添加一个if/else语句来只显示特定页面上的字段…

if ( $post->ID === 23 ) {
    // Input for zip code on page 23
} else {
    // No input for zip code
}

我终于明白了。

问题是,is_page()等对"preprocess_comment"过滤器不起作用。但是您可以通过使用

来检查将分配给评论的页面ID:
$post_id = $commentdata['comment_post_ID'];