learndash/manage-topic creates a new topic or updates an existing one.
A newly created topic is not attached to anything, and when you do attach it the parent must be a lesson.
At a glance
| Ability | learndash/manage-topic |
| Toolset | LearnDash — toolset/learndash |
| Group | LearnDash › Lessons, Topics & Quizzes |
| Requires | AcrossAI Pro, plus LearnDash LMS active on the site |
| Capability | manage_options |
| Safety | Writes data |
| Repeatable | Idempotent — running it twice leaves the same result |
| Ships in | AcrossAI Pro 0.9.16 and later |
How it works
A topic cannot hang directly off a course. LearnDash’s hierarchy is course → lesson → topic, with quizzes attachable at any of the three levels, and learndash/attach-step enforces it.
That is worth knowing at creation time, because a topic created for a course with no lessons has nowhere to go.
Settings are written through LearnDash’s own accessor, so the meta LearnDash mirrors internally stays consistent. Writing the meta directly leaves the two copies disagreeing, and LearnDash reads whichever one it happens to read.
The settings mirror a lesson’s minus the drip-feed: topic_assignment_upload, topic_assignment_points_enabled, topic_assignment_points_amount, forced_topic_time, and the video keys, which retain the lesson prefix — lesson_video_enabled and lesson_video_url — on topics too.
That naming inconsistency is LearnDash’s rather than this suite’s, and it is the kind of thing a generic meta write gets wrong.
Idempotent.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
action | string | Yes | create or update. |
topic_id | integer | For update | Which topic. |
title | string | For create | The topic title. |
content | string | No | The topic content. |
status | string | No | Post status. |
settings | object | No | LearnDash settings keys. |
What comes back
| Name | Type | What it is |
|---|---|---|
topic | object | The topic after the write. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
Add a topic to that lesson.
It resolves to one call:
{
"ability": "learndash/manage-topic",
"parameters": {
"action": "create",
"title": "Keyboard shortcuts"
}
}Worth knowing
- Must be attached under a lesson, never directly to a course.
- The video settings keep the
lesson_prefix even on topics. - No drip-feed of its own.
- Idempotent.
Related abilities
- LearnDash Attach Step — place it under a lesson
- LearnDash Get Topic — read the current settings
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category