Шаг 5: Реализация функциональности создания, редактирования и удаления записей базы знаний

В этом шаге мы реализуем функции для создания, редактирования и удаления записей базы знаний. Мы будем использовать стандартные возможности WordPress для работы с записями и метаданными.

  1. Создай новый файл post-management.php в папке includes плагина.
  2. Открой файл post-management.php и добавь следующий код:
<?php

function akb_save_post_meta( $post_id ) {
    if ( isset( $_POST['akb_meta_box_nonce'] ) && wp_verify_nonce( $_POST['akb_meta_box_nonce'], 'akb_save_post_meta' ) ) {
        if ( isset( $_POST['akb_post_meta'] ) ) {
            $post_meta = sanitize_text_field( $_POST['akb_post_meta'] );
            update_post_meta( $post_id, 'akb_post_meta', $post_meta );
        }
    }
}
add_action( 'save_post_knowledge_base', 'akb_save_post_meta' );

function akb_add_post_meta_box() {
    add_meta_box(
        'akb_post_meta_box',
        esc_html__( 'Additional Information', 'admin-knowledge-base' ),
        'akb_render_post_meta_box',
        'knowledge_base',
        'normal',
        'default'
    );
}
add_action( 'add_meta_boxes_knowledge_base', 'akb_add_post_meta_box' );

function akb_render_post_meta_box( $post ) {
    $post_meta = get_post_meta( $post->ID, 'akb_post_meta', true );
    wp_nonce_field( 'akb_save_post_meta', 'akb_meta_box_nonce' );
    ?>
    <label for="akb_post_meta"><?php esc_html_e( 'Additional Information', 'admin-knowledge-base' ); ?></label>
    <textarea id="akb_post_meta" name="akb_post_meta" rows="4" cols="50"><?php echo esc_textarea( $post_meta ); ?></textarea>
    <?php
}
  1. Давай разберем основные части этого кода:
  • akb_save_post_meta(): Функция для сохранения метаданных записи при ее создании или обновлении. Она проверяет наличие и валидность nonce, а затем сохраняет значение метаданных, если оно присутствует.
  • akb_add_post_meta_box(): Функция для добавления метабокса с дополнительной информацией на страницу редактирования записи базы знаний. Она использует функцию add_meta_box() для регистрации метабокса.
  • akb_render_post_meta_box(): Функция для отображения содержимого метабокса на странице редактирования записи. Она получает текущие значения метаданных и выводит текстовое поле для их редактирования.
  1. Сохрани файл post-management.php.
  2. Открой главный файл плагина admin-knowledge-base.php и добавь следующий код в конце файла:
require_once plugin_dir_path( __FILE__ ) . 'includes/post-management.php';

Теперь мы добавили возможность создания, редактирования и удаления записей базы знаний. При создании или редактировании записи администраторы могут ввести дополнительную информацию в метабокс, которая будет сохранена как метаданные записи.

На следующем шаге мы реализуем проверки безопасности и разграничение доступа для плагина.