Intereting Posts

Можно ли показать пользовательские метаданные комментариев в панели администратора?

Я настроил форму комментариев с новым полем (город, но это не имеет особого значения). Я подключил и отфильтровал и добавил метаданные комментариев с помощью add_comment_metadata.

Я хочу показать эти метаданные в панели администратора комментариев (wp-admin / edit-comments.php). Поиски Google оказались бесплодными.

Это возможно? Если да, то как это можно сделать?

Я бы хотел показать это в столбце автора, но я соглашусь просмотреть метаданные в окне редактирования для каждого отдельного комментария.

Чтобы показывать контент на отдельных страницах редактирования, вам нужно добавить специальные мета-поля на страницу редактирования комментариев. Вы будете использовать ключевой 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'] ) ); } 

Я написал учебник об этом, если вам интересно узнать больше – фрагменты кода выше.

Для отображения данных в таблице списка комментариев аналогично добавлению пользовательских столбцов для публикации списков таблиц .

Чтобы убедиться, что мы получим правильный экран, подключитесь к load-edit-comments.php , возьмите текущий экран и manage_{$screen->id}_columns в 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 чтобы manage_comments_custom_column заголовок комментария в таблице фактических списков. Это довольно прямолинейно. Я использовал оператор switch здесь, потому что легко расширяемый, чтобы включить больше настраиваемых столбцов.

Любой ранее добавленный столбец $key будет первым аргументом, переданным в функцию hooked.

 <?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 и вышеупомянутого материала для столбцов таблицы пользовательских списков находится здесь как плагин .