Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
90 lines
3.8 KiB
PHP
90 lines
3.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace LIT\MCP\Integrations\WordPress;
|
|
|
|
use LIT\MCP\ChangeLog\ChangeLog;
|
|
use LIT\MCP\Integrations\Integration;
|
|
use LIT\MCP\Integrations\WordPress\Content\ContentCreateAbility;
|
|
use LIT\MCP\Integrations\WordPress\Content\ContentGetAbility;
|
|
use LIT\MCP\Integrations\WordPress\Content\ContentQueryAbility;
|
|
use LIT\MCP\Integrations\WordPress\Content\ContentTypesAbility;
|
|
use LIT\MCP\Integrations\WordPress\Content\ContentUpdateAbility;
|
|
use LIT\MCP\Integrations\WordPress\Content\PostPresenter;
|
|
use LIT\MCP\Integrations\WordPress\Content\PostWriter;
|
|
use LIT\MCP\Integrations\WordPress\Menus\MenuAssignLocationAbility;
|
|
use LIT\MCP\Integrations\WordPress\Menus\MenuCreateAbility;
|
|
use LIT\MCP\Integrations\WordPress\Menus\MenuGetAbility;
|
|
use LIT\MCP\Integrations\WordPress\Menus\MenuListAbility;
|
|
use LIT\MCP\Integrations\WordPress\Menus\MenuOperations;
|
|
use LIT\MCP\Integrations\WordPress\Menus\MenuSetItemsAbility;
|
|
use LIT\MCP\Integrations\WordPress\Menus\MenuWriter;
|
|
use LIT\MCP\Integrations\WordPress\Revisions\RevisionRestoreAbility;
|
|
use LIT\MCP\Integrations\WordPress\Revisions\RevisionsListAbility;
|
|
use LIT\MCP\Integrations\WordPress\Schema\ContentSchema;
|
|
use LIT\MCP\Integrations\WordPress\Schema\FieldValidator;
|
|
use LIT\MCP\Integrations\WordPress\Schema\TermAssigner;
|
|
use LIT\MCP\Integrations\WordPress\Settings\SettingsWhitelist;
|
|
use LIT\MCP\Integrations\WordPress\Settings\WpSettingsGetAbility;
|
|
use LIT\MCP\Integrations\WordPress\Settings\WpSettingsUpdateAbility;
|
|
use LIT\MCP\Integrations\WordPress\Status\PostCloner;
|
|
use LIT\MCP\Integrations\WordPress\Status\PostDuplicateAbility;
|
|
use LIT\MCP\Integrations\WordPress\Status\PostPublishAbility;
|
|
use LIT\MCP\Integrations\WordPress\Status\PostReplaceWithCopyAbility;
|
|
use LIT\MCP\Integrations\WordPress\Status\PostScheduleAbility;
|
|
use LIT\MCP\Integrations\WordPress\Status\PostTrashAbility;
|
|
use LIT\MCP\Integrations\WordPress\Status\PostUnpublishAbility;
|
|
|
|
/**
|
|
* WordPress basics (spec §6): content, status, copies, revisions, menus, settings.
|
|
* Always available.
|
|
*/
|
|
final class WordPressIntegration implements Integration
|
|
{
|
|
public function __construct(private ContentSchema $schema, private ChangeLog $log)
|
|
{
|
|
}
|
|
|
|
public function id(): string
|
|
{
|
|
return 'wordpress';
|
|
}
|
|
|
|
public function isAvailable(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function abilities(): array
|
|
{
|
|
$presenter = new PostPresenter($this->schema);
|
|
$writer = new PostWriter($this->schema, new FieldValidator(), new TermAssigner());
|
|
$cloner = new PostCloner();
|
|
$whitelist = new SettingsWhitelist();
|
|
|
|
return [
|
|
new ContentTypesAbility($this->schema),
|
|
new ContentQueryAbility($this->schema, $presenter),
|
|
new ContentGetAbility($this->schema, $presenter),
|
|
new ContentCreateAbility($this->schema, $writer, $this->log),
|
|
new ContentUpdateAbility($this->schema, $writer, $this->log),
|
|
new PostPublishAbility($this->schema, $this->log),
|
|
new PostUnpublishAbility($this->schema, $this->log),
|
|
new PostScheduleAbility($this->schema, $this->log),
|
|
new PostTrashAbility($this->schema, $this->log),
|
|
new PostDuplicateAbility($this->schema, $cloner, $this->log),
|
|
new PostReplaceWithCopyAbility($this->schema, $cloner, $this->log),
|
|
new RevisionsListAbility($this->schema),
|
|
new RevisionRestoreAbility($this->schema, $this->log),
|
|
new MenuListAbility(),
|
|
new MenuGetAbility(),
|
|
new MenuCreateAbility($this->log),
|
|
new MenuSetItemsAbility(new MenuWriter(), new MenuOperations(), $this->log),
|
|
new MenuAssignLocationAbility($this->log),
|
|
new WpSettingsGetAbility($whitelist),
|
|
new WpSettingsUpdateAbility($whitelist, $this->log),
|
|
];
|
|
}
|
|
}
|