是否可以在管理面板中显示自定义评论元数据?

时间:2012-09-12 作者:ageektrapped

我已经用一个新字段(城市,但这并不重要)定制了我的评论表单。我已经用add\\u comment\\u元数据连接、过滤并添加了我的评论元数据。

我想在Comments admin面板(wp admin/edit Comments.php)中显示元数据。谷歌搜索结果证明是徒劳的。

Is this possible? If it is, how does one go about it?

我想在author列中显示它,但我愿意在edit视图中查看每个注释的元数据。

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

要在各个编辑页面上显示内容,需要将自定义元框添加到评论编辑页面。你要用钥匙comment 对于$page 的参数add_meta_box.

<?php
add_action( \'add_meta_boxes_comment\', \'pmg_comment_tut_add_meta_box\' );
function pmg_comment_tut_add_meta_box()
{
    add_meta_box( \'pmg-comment-title\', __( \'Comment Title\' ), \'pmg_comment_tut_meta_box_cb\', \'comment\', \'normal\', \'high\' );
}

function pmg_comment_tut_meta_box_cb( $comment )
{
    $title = get_comment_meta( $comment->comment_ID, \'pmg_comment_title\', true );
    wp_nonce_field( \'pmg_comment_update\', \'pmg_comment_update\', false );
    ?>
    <p>
        <label for="pmg_comment_title"><?php _e( \'Comment Title\' ); ?></label>;
        <input type="text" name="pmg_comment_title" value="<?php echo esc_attr( $title ); ?>" class="widefat" />
    </p>
    <?php
}
您可能还希望能够保存来自管理员的更改。你可以加入edit_comment 这样做。

<?php
add_action( \'edit_comment\', \'pmg_comment_tut_edit_comment\' );
function pmg_comment_tut_edit_comment( $comment_id )
{
    if( ! isset( $_POST[\'pmg_comment_update\'] ) || ! wp_verify_nonce( $_POST[\'pmg_comment_update\'], \'pmg_comment_update\' ) )
        return;
    if( isset( $_POST[\'pmg_comment_title\'] ) )
        update_comment_meta( $comment_id, \'pmg_comment_title\', esc_attr( $_POST[\'pmg_comment_title\'] ) );
}
我写了一个tutorial 如果您对了解更多内容感兴趣,请参阅上面的代码片段。

在注释列表表中显示数据的步骤类似于adding custom columns to post list tables.

为了确保我们得到了正确的屏幕load-edit-comments.php, 抓取当前屏幕,然后连接到manage_{$screen->id}_columns 向注释列表表中添加另一列。

<?php
add_action(\'load-edit-comments.php\', \'wpse64973_load\');
function wpse64973_load()
{
    $screen = get_current_screen();

    add_filter("manage_{$screen->id}_columns", \'wpse64973_add_columns\');
}
您连接到的函数manage_{$screen->id}_columns 只需要修改关联数组以包含列。这是一个$key => $label 配对--确保记住密钥,我们稍后将使用它。继续使用上面的评论标题。

最后,我们需要manage_comments_custom_column 在实际列表中回显注释标题。这很直截了当。我在这里使用了switch语句,因为它很容易扩展到包含更多自定义列。

任意列$key 前面添加的参数将是传递到挂钩函数的第一个参数。

<?php
add_action(\'manage_comments_custom_column\', \'wpse64973_column_cb\', 10, 2);
function wpse64973_column_cb($col, $comment_id)
{
    // you could expand the switch to take care of other custom columns
    switch($col)
    {
        case \'title\':
            if($t = get_comment_meta($comment_id, \'pmg_comment_title\', true))
            {
                echo esc_html($t);
            }
            else
            {
                esc_html_e(\'No Title\', \'wpse64973\');
            }
            break;
    }
}
注释tut和上述自定义列表列的代码是here as a plugin.

结束