wake-up-neo.com

Ist es möglich, benutzerdefinierte Kommentar-Metadaten im Admin-Bereich anzuzeigen?

Ich habe mein Kommentarformular mit einem neuen Feld versehen (Stadt, aber das ist eigentlich egal). Ich habe meine Kommentar-Metadaten mit add_comment_metadata verknüpft, gefiltert und hinzugefügt.

Ich möchte diese Metadaten im Kommentar-Admin-Bereich (wp-admin/edit-comments.php) anzeigen. Die Google-Suche ist erfolglos.

Ist das möglich? Wenn ja, wie geht man vor?

Ich würde es gerne in der Autorenspalte anzeigen, aber ich werde mich damit begnügen, die Metadaten für jeden einzelnen Kommentar in der Bearbeitungsansicht anzuzeigen.

1
ageektrapped

Um den Inhalt auf einzelnen Bearbeitungsseiten anzuzeigen, müssen Sie benutzerdefinierte Meta-Boxen zur Kommentarbearbeitungsseite hinzufügen. Sie verwenden den Schlüssel comment für das Argument $page von 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
}

Sie möchten wahrscheinlich auch in der Lage sein, Änderungen vom Administrator zu speichern. Sie können sich in edit_comment einhängen, um dies zu tun.

<?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'] ) );
}

Ich habe ein Tutorial darüber geschrieben, wenn Sie mehr erfahren möchten - die obigen Codefragmente stammen davon.

Das Anzeigen von Daten in der Kommentarlistentabelle ähnelt Hinzufügen von benutzerdefinierten Spalten zu Beitragslistentabellen .

Um sicherzustellen, dass der richtige Bildschirm angezeigt wird, schließen Sie sich an load-edit-comments.php an, greifen Sie auf den aktuellen Bildschirm zu und schließen Sie sich dann an manage_{$screen->id}_columns an, um der Kommentarlistentabelle eine weitere Spalte hinzuzufügen.

<?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');
}

Die Funktion, die Sie in manage_{$screen->id}_columns einbinden, muss nur das assoziative Array ändern, um die Spalte einzuschließen. Es ist ein $key => $label-Paar. Denken Sie daran, den Schlüssel zu speichern. Wir werden ihn später verwenden. Ich bleibe bei den Kommentartiteln oben.

Schließlich müssen wir uns in manage_comments_custom_column einhängen, um den Kommentartitel in der aktuellen Listentabelle auszugeben. Das ist ziemlich einfach. Ich habe hier eine switch-Anweisung verwendet, da diese einfach zu benutzerdefinierten Spalten erweitert werden kann.

Jede Spalte $key, die Sie zuvor hinzugefügt haben, ist das erste Argument, das an die Hook-Funktion übergeben wird.

<?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;
    }
}

Der Code aus dem Kommentar tut und dem oben genannten Material für benutzerdefinierte Listentabellenspalten ist hier als Plugin .

7
chrisguitarguy