// Create a new knowledge base post type
add_action( 'init', function() {
  register_post_type( 'knowledge_base', [
    'labels' => [
      'name' => __( 'Knowledge Base' ),
      'singular_name' => __( 'Knowledge Base Article' ),
      'add_new' => __( 'Add New Article' ),
      'add_new_item' => __( 'Add New Knowledge Base Article' ),
      'edit_item' => __( 'Edit Knowledge Base Article' ),
      'new_item' => __( 'New Knowledge Base Article' ),
      'view_item' => __( 'View Knowledge Base Article' ),
      'search_items' => __( 'Search Knowledge Base Articles' ),
      'not_found' => __( 'No Knowledge Base Articles found' ),
      'not_found_in_trash' => __( 'No Knowledge Base Articles found in Trash' ),
    ],
    'public' => true,
    'hierarchical' => false,
    'has_archive' => true,
    'supports' => [ 'title', 'editor', 'thumbnail', 'excerpt' ],
    'menu_icon' => 'dashicons-book',
    'show_in_rest' => true,
  ] );
} );

// Create a new taxonomy for knowledge base categories
add_action( 'init', function() {
  register_taxonomy( 'knowledge_base_category', 'knowledge_base', [
    'labels' => [
      'name' => __( 'Knowledge Base Categories' ),
      'singular_name' => __( 'Knowledge Base Category' ),
      'search_items' => __( 'Search Knowledge Base Categories' ),
      'popular_items' => null,
      'all_items' => __( 'All Knowledge Base Categories' ),
      'edit_item' => __( 'Edit Knowledge Base Category' ),
      'update_item' => __( 'Update Knowledge Base Category' ),
      'add_new_item' => __( 'Add New Knowledge Base Category' ),
      'new_item_name' => __( 'New Knowledge Base Category Name' ),
      'separate_items_with_commas' => null,
      'add_or_remove_items' => null,
      'choose_from_most_used' => null,
    ],
    'hierarchical' => true,
    'query_var' => true,
    'rewrite' => [ 'slug' => 'knowledge-base-categories' ],
  ] );
} );
// Create a new knowledge base article
$article = new WP_Post( [
  'post_title' => 'How to Create a Knowledge Base in WordPress',
  'post_content' => 'This article will show you how to create a knowledge base in WordPress.',
  'post_status' => 'publish',
  'post_type' => 'knowledge_base',
] );

// Add a category to the article
wp_set_object_terms( $article->ID, 'general', 'knowledge_base_category' );

// Save the article
wp_insert_post( $article );