delete-category
Remove a WordPress category by specifying its ID and site credentials. Ensures complete deletion without trashing, simplifying category management through programmatic API integration.
Instructions
Delete a WordPress category
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| categoryId | Yes | ID of the category to delete | |
| force | No | Required to be true, as terms do not support trashing | |
| password | Yes | WordPress application password | |
| siteUrl | Yes | WordPress site URL | |
| username | Yes | WordPress username |
Implementation Reference
- src/index.ts:2071-2098 (handler)The handler function for the 'delete-category' tool. It makes a DELETE request to the WordPress REST API endpoint `/wp-json/wp/v2/categories/${categoryId}` using the shared `makeWPRequest` helper, with `force` parameter. Returns success or error message in MCP content format.try { await makeWPRequest<any>({ siteUrl, endpoint: `categories/${categoryId}`, method: "DELETE", auth: { username, password }, params: { force } }); return { content: [ { type: "text", text: `Successfully deleted category ${categoryId}.`, }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error deleting category: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } }
- src/index.ts:2064-2070 (schema)Zod schema defining input parameters for the 'delete-category' tool: siteUrl (required URL), username, password (credentials), categoryId (number, required), force (boolean, defaults to true).siteUrl: z.string().url().describe("WordPress site URL"), username: z.string().describe("WordPress username"), password: z.string().describe("WordPress application password"), categoryId: z.number().describe("ID of the category to delete"), force: z.boolean().optional().default(true).describe("Required to be true, as terms do not support trashing"), }, async ({ siteUrl, username, password, categoryId, force }) => {
- src/index.ts:2061-2099 (registration)Registration of the 'delete-category' tool via `server.tool(name, description, inputSchema, handlerFunction)`. Located in the CATEGORY TOOLS section."delete-category", "Delete a WordPress category", { siteUrl: z.string().url().describe("WordPress site URL"), username: z.string().describe("WordPress username"), password: z.string().describe("WordPress application password"), categoryId: z.number().describe("ID of the category to delete"), force: z.boolean().optional().default(true).describe("Required to be true, as terms do not support trashing"), }, async ({ siteUrl, username, password, categoryId, force }) => { try { await makeWPRequest<any>({ siteUrl, endpoint: `categories/${categoryId}`, method: "DELETE", auth: { username, password }, params: { force } }); return { content: [ { type: "text", text: `Successfully deleted category ${categoryId}.`, }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error deleting category: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } } );
- src/index.ts:158-194 (helper)Shared helper function `makeWPRequest` used by all WP API tools, including delete-category, to perform authenticated HTTP requests to WP REST API.async function makeWPRequest<T>({ siteUrl, endpoint, method = 'GET', auth, data = null, params = null }: { siteUrl: string; endpoint: string; method?: 'GET' | 'POST' | 'PUT' | 'DELETE'; auth: { username: string; password: string }; data?: any; params?: any; }): Promise<T> { const authString = Buffer.from(`${auth.username}:${auth.password}`).toString('base64'); try { const response = await axios({ method, url: `${siteUrl}/wp-json/wp/v2/${endpoint}`, headers: { 'Authorization': `Basic ${authString}`, 'Content-Type': 'application/json', }, data: data, params: params }); return response.data as T; } catch (error) { if (axios.isAxiosError(error) && error.response) { throw new Error(`WordPress API error: ${error.response.data?.message || error.message}`); } throw error; } }