仅显示第一级的自定义备注字段

时间:2013-12-26 作者:user3136701

我有一个简单的功能,可以添加名为“主题”的附加评论表单字段:

add_action( \'comment_form_logged_in_before\', \'additional_fields\' );
add_action( \'comment_form_before_fields\', \'additional_fields\' ); 

function additional_fields () {
    echo \'<p class="comment-form-subject">\'.
    \'<label for="subject">\' . __( \'Your subject\' ) . \'</label>\'.
    \'<input id="subject" name="subject" type="text" size="30"  tabindex="5" /></p>\';
}
它工作得很好,但刚才它在每个评论表单中添加了“主题”字段。

我只需要为第一级/深度评论添加此字段。

我的目标是:
当用户直接回复帖子时,他将在回复表单中获得“主题”字段。当用户回复评论时,他不会在回复表单中看到“主题”字段。

4 个回复
SO网友:birgire

回复链接

我假设您的回复链接如下所示:

<a class="comment-reply-link" href="/2013/12/29/hello-world/?replytocom=32#respond" 
 onclick="return addComment.moveForm(\'comment-32\', \'32\', \'respond\', \'1\')">Reply</a>
和取消回复链接:

<a rel="nofollow" id="cancel-comment-reply-link" 
href="/2013/12/29/hello-world/#respond" style="">Cancel reply</a>
Javascript方法addComment.moveForm 定义于/wp-includes/js/comment-reply.min.js.

演示插件:

要隐藏评论回复的额外主题字段,您可以尝试检查replytocom 获取非Javascript案例的参数,并钩住Javascript案例的click事件。

这是一个演示Comment Subject 插件:/wp-content/plugins/comment-subject/comment-subject.php:

<?php
/**
 * Plugin Name: Comment Subject
 */

/**
 * Add extra Subject comment field when there is no replytocom in the url 
 */
function additional_fields () {

    $url_query = parse_url( $_SERVER[\'REQUEST_URI\'], PHP_URL_QUERY );

    if( FALSE === stripos( $url_query, \'replytocom\' ) )
    { 
        echo \'<p class="comment-form-subject">\'.
        \'<label for="subject">\' . __( \'Your subject\' ) . \'</label>\'.
        \'<input id="subject" name="subject" type="text" size="30"  tabindex="5" /></p>\';
    }
}

add_action( \'comment_form_logged_in_before\', \'additional_fields\' );
add_action( \'comment_form_before_fields\', \'additional_fields\' ); 

/**
 * Add jQuery and load the custom "script.js"
 */    
function custom_scripts() 
{
    wp_enqueue_script( \'jquery\' );

    wp_enqueue_script(  \'my-comment-subject\', 
                            plugins_url( \'js/script.js\' , __FILE__ ), 
                            array( \'jquery\' ), 
                            \'1.0.0\', 
                            TRUE 
                     );

}

add_action( \'wp_enqueue_scripts\', \'custom_scripts\' );
添加文件的位置/wp-content/plugins/comment-subject/js/script.js 包含:

jQuery(document).on( \'click\', \'a.comment-reply-link\', function( event ) {
    jQuery(\'p.comment-form-subject\').hide();
});

jQuery(document).on( \'click\', \'a#cancel-comment-reply-link\', function( event ) {
    jQuery(\'p.comment-form-subject\').show();
});

SO网友:tfrommen

让我来介绍一个简单的CSS专用解决方案:

/* Hide the subject for nested comments (level 2 and below) */
.comment .comment p.comment-form-subject {
    display: none;
}
此解决方案假定您正在使用comment_class.

SO网友:JMB

使用条件检查是否有注释如何?如果没有,则显示其他注释表单。

$num_comments = get_comments_number( $post_id );
if($num_comments > 0) {
    // Your function to edit comment fields if there ARE comments. Or nothing if the default fields are fine.
}
else
{
//We have comments, so run your function, as above.
add_action( \'comment_form_logged_in_before\', \'additional_fields\' );
add_action( \'comment_form_before_fields\', \'additional_fields\' ); 

function additional_fields () {
    echo \'<p class="comment-form-subject">\'.
    \'<label for="subject">\' . __( \'Your subject\' ) . \'</label>\'.
    \'<input id="subject" name="subject" type="text" size="30"  tabindex="5" /></p>\';
}
} //End else

SO网友:S kumar

在单曲中使用此片段。php,将其粘贴在while循环之前的注释打开函数中,这将得到您的解决方案。

$args = array( \'post_id\' => $post->ID,\'count\' => true );
 $comments = get_comments($args);

 if( $comments == 0  ) :
    add_action( \'comment_form_logged_in_before\', \'additional_fields\' );
    add_action( \'comment_form_before_fields\', \'additional_fields\' );
 endif;

 function additional_fields () {
    echo \'<p class="comment-form-subject">\'.
    \'<label for="subject">\' . __( \'Your subject\' ) . \'</label>\'.
    \'<input id="subject" name="subject" type="text" size="30"  tabindex="5" /></p>\';
 }

结束

相关推荐

WP_Query in functions.php

我有一些代码要转换成函数。它工作得很好,直到我将其包装到所述函数中: $args = array( \'posts_per_page\' => -1, \'post_type\' => \'asset\', \'category_name\' => $cat ); $cat_query = new WP_Query( $args );