【问题标题】:WP custom comment field only on certain page仅在特定页面上的 WP 自定义评论字段
【发布时间】:2016-10-23 01:15:49
【问题描述】:

在一个小插件的帮助下,我在我的 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()),但这也不起作用。

您能否指出正确的方向,如何使我的插件功能仅在该特定页面上工作?什么是“最佳做法”?

谢谢!

【问题讨论】:

    标签: php wordpress plugins


    【解决方案1】:

    您可以添加 if/else 语句以仅显示该特定页面上的字段...

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

    【讨论】:

    • 这就是我正在做的事情。但是,当我将其放入该语句时,检查字段的部分不再起作用。 ://
    • 我注意到你在使用is_page() - 你用$post->ID试过了吗?
    【解决方案2】:

    我终于明白了。

    问题是,is_page() 等不适用于“preprocess_comment”过滤器。 但是您可以使用以下命令检查评论将分配到的页面 ID:

    $post_id = $commentdata['comment_post_ID'];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多