30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

LearnDash Manage Topic

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

Abilitylearndash/manage-topic
ToolsetLearnDash — toolset/learndash
GroupLearnDash › Lessons, Topics & Quizzes
RequiresAcrossAI Pro, plus LearnDash LMS active on the site
Capabilitymanage_options
SafetyWrites data
RepeatableIdempotent — running it twice leaves the same result
Ships inAcrossAI 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

NameTypeRequiredWhat it is
actionstringYescreate or update.
topic_idintegerFor updateWhich topic.
titlestringFor createThe topic title.
contentstringNoThe topic content.
statusstringNoPost status.
settingsobjectNoLearnDash settings keys.

What comes back

NameTypeWhat it is
topicobjectThe topic after the write.
successbooleanWhether the call completed.
messagestringA one-line summary of what happened, suitable for showing a human.
error_codestringPresent 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


Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager

Browse the rest: Every ability, by category


Keep reading