在编辑评论页面中显示不起作用的所有评论

时间:2021-09-23 作者:UserUser-name

我正在尝试显示与正在编辑的评论所属的帖子相关的所有评论。

我的代码(基于this example)

add_action( \'admin_menu\', \'all_display_comments_add_meta_box\' );

function all_display_comments_add_meta_box() {
    add_meta_box( \'commentsdiv\', __( \'Comments\' ), \'my_post_comment_meta_box\', \'comment\', \'normal\', \'high\' );
}

function my_post_comment_meta_box( $post ) {

    $total         = get_comments(
        array(
            \'post_id\' => $post->ID,
            \'number\'  => 1,
            \'count\'   => true,
        )
    );
    $wp_list_table = _get_list_table( \'WP_Post_Comments_List_Table\' );
    $wp_list_table->display( true );

    if ( 1 > $total ) {
        echo \'<p id="no-comments">\' . __( \'No comments yet.\' ) . \'</p>\';
    } else {
        $hidden = get_hidden_meta_boxes( get_current_screen() );
        if ( ! in_array( \'commentsdiv\', $hidden, true ) ) {
            ?>
            <script type="text/javascript">jQuery(document).ready(function(){commentsBox.get(<?php echo $total; ?>, 10);});</script>
            <?php
        }

        ?>
        <p class="hide-if-no-js" id="show-comments"><a href="#commentstatusdiv" onclick="commentsBox.load(<?php echo $total; ?>);return false;"><?php _e( \'Show comments\' ); ?></a> <span class="spinner"></span></p>
        <?php
    }

    wp_comment_trashnotice();
}
enter image description here对不起,我的英语不好。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

你需要做这些,以便;“显示注释”;零件工作正常:

在;编辑注释;页码(位于wp-admin/comment.php), 传递给元框回调的第一个参数(您的my_post_comment_meta_box() 函数)是WP_Comment 对象而不是WP_Post 对象,因此需要手动定义$post 在您的功能中。

添加回get-comments nonce到您的函数,就像在原始函数中一样post_comment_meta_box() 作用

然后,用post_ID 作为输入id 并将注释的post ID作为值。

元数据框使用一个名为commentsBox 定义见wp-admin/js/post.js, 因此,您需要在页面上加载该脚本。

因此,您的函数应该如下开始:

function my_post_comment_meta_box( $comment ) { // use $comment and not $post
    $post = get_post( $comment->comment_post_ID ); // manually define $post

    // Add the post ID input.
    echo \'<input type="hidden" id="post_ID" value="\' . $post->ID . \'">\';

    // Then the AJAX nonce.
    wp_nonce_field( \'get-comments\', \'add_comment_nonce\', false );
然后您可以使用admin_enqueue_scripts hook 加载post.js 脚本:

add_action( \'admin_enqueue_scripts\', \'my_admin_enqueue_scripts\' );
function my_admin_enqueue_scripts() {
    // Enqueue the script only if the current page is comment.php
    if ( \'comment\' === get_current_screen()->id ) {
        wp_enqueue_script( \'post\' );
    }
}

如果您想要评论的操作链接,如;答复;和;“快速编辑”;工作,然后:

在上面的my_admin_enqueue_scripts() 函数,在wp_enqueue_script( \'post\' ); :

// Enqueue the comment reply script.
wp_enqueue_script( \'admin-comments\' );
然后在该函数之后,添加该函数,输出内联评论回复表单:(我们必须将其放在标题中,以便action 输入未被覆盖。有一种jQuery/JS方法可以解决这个问题,但我只使用以下方法,不用担心,默认情况下表单是隐藏的。)

add_action( \'in_admin_header\', \'my_in_admin_header\' );
function my_in_admin_header() {
    if ( \'comment\' === get_current_screen()->id ) {
        wp_comment_reply( \'-1\' );
    }
}

相关推荐

如何根据评论元字段对“EDIT-Comments.php”表中的评论进行排序?

目标在;编辑注释。php“;单击自定义列的标题后,基于注释元字段的表。上下文为了简洁起见,我们假设在发布评论时,一个名为;“红心”;指定给它,以便所有注释都具有从0到10的正整数字段。的bold 下面提到的步骤,前三个步骤是针对上下文和预期工作给出的,问题是在第四个步骤上。1. Creating the columnadd_filter( \'manage_edit-comments_columns\', \'hearts_add_comments_column\' ); function hea