fix(qa): SEO API Bridge fixes, transport type corrections, README improvements
- Fix SEO API Bridge branding, meta keys, route namespaces, GET auth - Create WordPress.org-compatible readme.txt - Fix transport types across all docs (streamableHttp/http, not sse) - Add WordPress Plugin Requirements section to README Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
cp env.example .env # Copy and fill in credentials
|
||||
pip install -e ".[dev]" # Install with dev deps
|
||||
python server.py # Run (stdio) or:
|
||||
python server.py --transport sse --port 8000 # Run (HTTP)
|
||||
python server.py --transport streamable-http --port 8000 # Run (HTTP)
|
||||
```
|
||||
|
||||
## Build & Development Commands
|
||||
@@ -24,8 +24,8 @@ pip install -e ".[dev]"
|
||||
# Run server (stdio transport for Claude Desktop)
|
||||
python server.py
|
||||
|
||||
# Run server (SSE/HTTP transport for testing)
|
||||
python server.py --transport sse --port 8000
|
||||
# Run server (HTTP transport for testing)
|
||||
python server.py --transport streamable-http --port 8000
|
||||
|
||||
# Run all tests
|
||||
pytest
|
||||
|
||||
@@ -20,7 +20,7 @@ pytest # Verify setup
|
||||
|
||||
```bash
|
||||
python server.py # stdio (Claude Desktop)
|
||||
python server.py --transport sse --port 8000 # HTTP (testing)
|
||||
python server.py --transport streamable-http --port 8000 # HTTP (testing)
|
||||
```
|
||||
|
||||
### Code Style
|
||||
|
||||
75
README.md
75
README.md
@@ -10,7 +10,7 @@ Connect your sites, stores, repos, and databases — manage them all through Cla
|
||||
[](https://www.python.org/)
|
||||
[](https://pypi.org/project/mcphub-server/)
|
||||
[](https://hub.docker.com/r/airano/mcphub)
|
||||
[]()
|
||||
[]()
|
||||
[]()
|
||||
[](https://github.com/airano-ir/mcphub/actions/workflows/ci.yml)
|
||||
|
||||
@@ -91,7 +91,7 @@ cd mcphub
|
||||
pip install -e .
|
||||
cp env.example .env
|
||||
# Edit .env with your site credentials
|
||||
python server.py --transport sse --port 8000
|
||||
python server.py --transport streamable-http --port 8000
|
||||
```
|
||||
|
||||
### Verify It Works
|
||||
@@ -112,7 +112,7 @@ You should see the login page. Use your `MASTER_API_KEY` to log in.
|
||||
Add site credentials to `.env`:
|
||||
|
||||
```bash
|
||||
# Master API Key (required)
|
||||
# Master API Key (recommended — auto-generates temp key if omitted)
|
||||
MASTER_API_KEY=your-secure-key-here
|
||||
|
||||
# WordPress Site
|
||||
@@ -135,6 +135,10 @@ GITEA_REPO1_ALIAS=mygitea
|
||||
|
||||
### Connect Your AI Client
|
||||
|
||||
All MCP clients use **Bearer token** authentication: `Authorization: Bearer YOUR_API_KEY`
|
||||
|
||||
> Use a plugin-specific endpoint (e.g., `/wordpress/mcp`) instead of `/mcp` to reduce tool count and save tokens. See [Architecture](#architecture) below.
|
||||
|
||||
<details>
|
||||
<summary><b>Claude Desktop</b></summary>
|
||||
|
||||
@@ -143,10 +147,11 @@ Add to `claude_desktop_config.json`:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"mcphub": {
|
||||
"url": "https://your-server:8000/mcp",
|
||||
"mcphub-wordpress": {
|
||||
"type": "streamableHttp",
|
||||
"url": "http://your-server:8000/wordpress/mcp",
|
||||
"headers": {
|
||||
"Authorization": "Bearer YOUR_MASTER_API_KEY"
|
||||
"Authorization": "Bearer YOUR_API_KEY"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -163,11 +168,11 @@ Add to `.mcp.json` in your project:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"mcphub": {
|
||||
"type": "sse",
|
||||
"url": "https://your-server:8000/mcp",
|
||||
"mcphub-wordpress": {
|
||||
"type": "http",
|
||||
"url": "http://your-server:8000/wordpress/mcp",
|
||||
"headers": {
|
||||
"Authorization": "Bearer YOUR_MASTER_API_KEY"
|
||||
"Authorization": "Bearer YOUR_API_KEY"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -181,9 +186,9 @@ Add to `.mcp.json` in your project:
|
||||
|
||||
Go to **Settings > MCP Servers > Add Server**:
|
||||
|
||||
- **Name**: MCP Hub
|
||||
- **URL**: `https://your-server:8000/mcp`
|
||||
- **Headers**: `Authorization: Bearer YOUR_MASTER_API_KEY`
|
||||
- **Name**: MCP Hub WordPress
|
||||
- **URL**: `http://your-server:8000/wordpress/mcp`
|
||||
- **Headers**: `Authorization: Bearer YOUR_API_KEY`
|
||||
|
||||
</details>
|
||||
|
||||
@@ -195,11 +200,11 @@ Add to `.vscode/mcp.json`:
|
||||
```json
|
||||
{
|
||||
"servers": {
|
||||
"mcphub": {
|
||||
"type": "sse",
|
||||
"url": "https://your-server:8000/mcp",
|
||||
"mcphub-wordpress": {
|
||||
"type": "http",
|
||||
"url": "http://your-server:8000/wordpress/mcp",
|
||||
"headers": {
|
||||
"Authorization": "Bearer YOUR_MASTER_API_KEY"
|
||||
"Authorization": "Bearer YOUR_API_KEY"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -219,6 +224,8 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
||||
|
||||
</details>
|
||||
|
||||
> **Transport types**: Use `"type": "streamableHttp"` for Claude Desktop and `"type": "http"` for VS Code/Claude Code. Using `"type": "sse"` will cause `400 Bad Request` errors.
|
||||
|
||||
---
|
||||
|
||||
## Architecture
|
||||
@@ -237,7 +244,13 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
||||
/project/{alias}/mcp → Per-project endpoint (auto-injects site)
|
||||
```
|
||||
|
||||
**Multi-endpoint architecture**: Give each team member or AI agent access to only the tools they need.
|
||||
**Recommendation**: Use plugin-specific endpoints instead of `/mcp` (596 tools) to minimize token usage.
|
||||
|
||||
| Endpoint | Use Case | Tools |
|
||||
|----------|----------|------:|
|
||||
| `/project/{alias}/mcp` | Single-site workflow (recommended) | 22-100 |
|
||||
| `/{plugin}/mcp` | Multi-site management | 23-101 |
|
||||
| `/mcp` | Admin & discovery only | 596 |
|
||||
|
||||
### Security
|
||||
|
||||
@@ -249,6 +262,28 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
||||
|
||||
> **Compatibility Note**: MCP Hub requires FastMCP 2.x (`>=2.14.0,<3.0.0`). FastMCP 3.0 introduced breaking changes and is not yet supported. If you install dependencies manually, ensure you don't upgrade to FastMCP 3.x.
|
||||
|
||||
### WordPress Plugin Requirements
|
||||
|
||||
Some MCP Hub tools require companion WordPress plugins:
|
||||
|
||||
| Tools | Requirement |
|
||||
|-------|-------------|
|
||||
| SEO tools (`wordpress_get_post_seo`, etc.) | [SEO API Bridge](wordpress-plugin/seo-api-bridge/) + Rank Math or Yoast SEO |
|
||||
| WP-CLI tools (15 tools: `wp_cache_*`, `wp_db_*`, etc.) | Docker socket + `CONTAINER` env var |
|
||||
| WordPress Advanced database/system tools | Docker socket + `CONTAINER` env var |
|
||||
| WooCommerce tools | WooCommerce plugin (separate `WOOCOMMERCE_` config) |
|
||||
|
||||
**Docker socket** is needed for WP-CLI and WordPress Advanced system tools. Add to your docker-compose:
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
environment:
|
||||
WORDPRESS_SITE1_CONTAINER: your-wp-container-name
|
||||
```
|
||||
|
||||
Without Docker socket, WP-CLI tools return "not available" but all REST API tools work normally.
|
||||
|
||||
---
|
||||
|
||||
## Documentation
|
||||
@@ -272,14 +307,14 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
||||
# Install with dev dependencies
|
||||
pip install -e ".[dev]"
|
||||
|
||||
# Run tests (289 tests)
|
||||
# Run tests (290 tests)
|
||||
pytest
|
||||
|
||||
# Format and lint
|
||||
black . && ruff check --fix .
|
||||
|
||||
# Run server locally
|
||||
python server.py --transport sse --port 8000
|
||||
python server.py --transport streamable-http --port 8000
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -70,7 +70,7 @@ cd mcphub
|
||||
pip install -e .
|
||||
cp env.example .env
|
||||
# Edit .env with your site credentials
|
||||
python server.py --transport sse --port 8000
|
||||
python server.py --transport streamable-http --port 8000
|
||||
```
|
||||
|
||||
### Option 4: Automated Setup Scripts
|
||||
@@ -305,7 +305,7 @@ DIRECTUS_SITE1_ALIAS=my-directus # Recommended
|
||||
### SSE Transport (for remote AI clients)
|
||||
|
||||
```bash
|
||||
python server.py --transport sse --port 8000
|
||||
python server.py --transport streamable-http --port 8000
|
||||
```
|
||||
|
||||
### Stdio Transport (for Claude Desktop local)
|
||||
|
||||
@@ -9,8 +9,8 @@ Usage:
|
||||
# With stdio transport (Claude Desktop)
|
||||
python server.py
|
||||
|
||||
# With SSE transport (HTTP server)
|
||||
python server.py --transport sse --port 8000
|
||||
# With HTTP transport (Streamable HTTP server)
|
||||
python server.py --transport streamable-http --port 8000
|
||||
|
||||
Environment Variables:
|
||||
MASTER_API_KEY: Master API key for authentication
|
||||
|
||||
@@ -19,7 +19,7 @@ Benefits:
|
||||
- Scalable architecture
|
||||
|
||||
Usage:
|
||||
python server_multi.py --transport sse --port 8000
|
||||
python server_multi.py --transport streamable-http --port 8000
|
||||
"""
|
||||
|
||||
import inspect
|
||||
|
||||
@@ -31,7 +31,7 @@ SEO API Bridge is a comprehensive WordPress plugin that exposes Rank Math SEO an
|
||||
|
||||
#### Core Fields
|
||||
- `rank_math_focus_keyword` - Focus keyword
|
||||
- `rank_math_seo_title` - Meta title
|
||||
- `rank_math_title` - Meta title
|
||||
- `rank_math_description` - Meta description
|
||||
- `rank_math_additional_keywords` - Additional keywords
|
||||
|
||||
@@ -94,7 +94,7 @@ SEO API Bridge is a comprehensive WordPress plugin that exposes Rank Math SEO an
|
||||
2. Go to WordPress Admin → Plugins
|
||||
3. Find "SEO API Bridge" and click "Activate"
|
||||
|
||||
### Method 3: WP-CLI (Recommended for Coolify)
|
||||
### Method 3: WP-CLI
|
||||
|
||||
```bash
|
||||
# Via SSH to your WordPress container
|
||||
@@ -107,48 +107,48 @@ wp plugin activate seo-api-bridge
|
||||
|
||||
### Status Endpoint
|
||||
|
||||
**GET** `/wp-json/seo-bridge/v1/status`
|
||||
**GET** `/wp-json/seo-api-bridge/v1/status`
|
||||
|
||||
Check plugin status and detected SEO plugins.
|
||||
|
||||
```bash
|
||||
curl https://yoursite.com/wp-json/seo-bridge/v1/status
|
||||
curl https://yoursite.com/wp-json/seo-api-bridge/v1/status
|
||||
```
|
||||
|
||||
### Post SEO Endpoints
|
||||
|
||||
**GET** `/wp-json/seo-bridge/v1/posts/{id}/seo`
|
||||
**GET** `/wp-json/seo-api-bridge/v1/posts/{id}/seo`
|
||||
|
||||
Get SEO metadata for a post.
|
||||
|
||||
**POST** `/wp-json/seo-bridge/v1/posts/{id}/seo`
|
||||
**POST** `/wp-json/seo-api-bridge/v1/posts/{id}/seo`
|
||||
|
||||
Update SEO metadata for a post.
|
||||
|
||||
```bash
|
||||
curl -X POST https://yoursite.com/wp-json/seo-bridge/v1/posts/123/seo \
|
||||
curl -X POST https://yoursite.com/wp-json/seo-api-bridge/v1/posts/123/seo \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"focus_keyword": "wordpress", "seo_title": "My Title"}'
|
||||
```
|
||||
|
||||
### Page SEO Endpoints
|
||||
|
||||
**GET** `/wp-json/seo-bridge/v1/pages/{id}/seo`
|
||||
**GET** `/wp-json/seo-api-bridge/v1/pages/{id}/seo`
|
||||
|
||||
**POST** `/wp-json/seo-bridge/v1/pages/{id}/seo`
|
||||
**POST** `/wp-json/seo-api-bridge/v1/pages/{id}/seo`
|
||||
|
||||
### Product SEO Endpoints (WooCommerce)
|
||||
|
||||
**GET** `/wp-json/seo-bridge/v1/products/{id}/seo`
|
||||
**GET** `/wp-json/seo-api-bridge/v1/products/{id}/seo`
|
||||
|
||||
Get SEO metadata for a WooCommerce product.
|
||||
|
||||
**POST** `/wp-json/seo-bridge/v1/products/{id}/seo`
|
||||
**POST** `/wp-json/seo-api-bridge/v1/products/{id}/seo`
|
||||
|
||||
Update SEO metadata for a WooCommerce product.
|
||||
|
||||
```bash
|
||||
curl -X POST https://yoursite.com/wp-json/seo-bridge/v1/products/1217/seo \
|
||||
curl -X POST https://yoursite.com/wp-json/seo-api-bridge/v1/products/1217/seo \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"focus_keyword": "product keyword", "seo_title": "Product Title"}'
|
||||
```
|
||||
@@ -190,7 +190,7 @@ await mcp.wordpress_update_product_seo({
|
||||
"title": {"rendered": "My Post"},
|
||||
"meta": {
|
||||
"rank_math_focus_keyword": "wordpress seo",
|
||||
"rank_math_seo_title": "Complete SEO Guide",
|
||||
"rank_math_title": "Complete SEO Guide",
|
||||
"rank_math_description": "Learn WordPress SEO best practices..."
|
||||
}
|
||||
}
|
||||
@@ -210,7 +210,7 @@ GET /wp-json/wp/v2/posts/{id}
|
||||
"title": {"rendered": "My Post"},
|
||||
"meta": {
|
||||
"rank_math_focus_keyword": "wordpress seo",
|
||||
"rank_math_seo_title": "Complete WordPress SEO Guide",
|
||||
"rank_math_title": "Complete WordPress SEO Guide",
|
||||
"rank_math_description": "Learn how to optimize your WordPress site...",
|
||||
"rank_math_facebook_title": "SEO Guide for Facebook",
|
||||
"rank_math_twitter_card_type": "summary_large_image"
|
||||
@@ -229,7 +229,7 @@ Content-Type: application/json
|
||||
{
|
||||
"meta": {
|
||||
"rank_math_focus_keyword": "wordpress optimization",
|
||||
"rank_math_seo_title": "WordPress Optimization Tips",
|
||||
"rank_math_title": "WordPress Optimization Tips",
|
||||
"rank_math_description": "Discover the best practices for WordPress optimization"
|
||||
}
|
||||
}
|
||||
@@ -255,7 +255,7 @@ POST /wp-json/wp/v2/products/{id}
|
||||
|
||||
## Usage with MCP Server
|
||||
|
||||
This plugin is designed to work with the [Coolify Projects MCP Server](https://github.com/your-repo/mcphub).
|
||||
This plugin is designed to work with the [MCP Hub](https://github.com/airano-ir/mcphub).
|
||||
|
||||
### Example MCP Tool Usage
|
||||
|
||||
@@ -397,8 +397,8 @@ curl -X GET "https://your-site.com/wp-json/wp/v2/posts/1" \
|
||||
## Support
|
||||
|
||||
For issues related to:
|
||||
- **This plugin:** [GitHub Issues](https://github.com/your-repo/mcphub/issues)
|
||||
- **MCP Server:** [MCP Server Documentation](https://github.com/your-repo/mcphub)
|
||||
- **This plugin:** [GitHub Issues](https://github.com/airano-ir/mcphub/issues)
|
||||
- **MCP Server:** [MCP Server Documentation](https://github.com/airano-ir/mcphub)
|
||||
- **Rank Math SEO:** [Rank Math Support](https://rankmath.com/support/)
|
||||
- **Yoast SEO:** [Yoast Support](https://yoast.com/help/)
|
||||
|
||||
@@ -425,4 +425,4 @@ MIT License - See LICENSE file for details
|
||||
|
||||
## Credits
|
||||
|
||||
Developed for use with Coolify Projects MCP Server to enable AI-powered SEO content management.
|
||||
Developed for use with MCP Hub to enable AI-powered SEO content management.
|
||||
|
||||
82
wordpress-plugin/seo-api-bridge/readme.txt
Normal file
82
wordpress-plugin/seo-api-bridge/readme.txt
Normal file
@@ -0,0 +1,82 @@
|
||||
=== SEO API Bridge ===
|
||||
Contributors: airano
|
||||
Tags: seo, rest-api, rank-math, yoast, mcp
|
||||
Requires at least: 5.0
|
||||
Tested up to: 6.7
|
||||
Requires PHP: 7.4
|
||||
Stable tag: 1.3.0
|
||||
License: MIT
|
||||
License URI: https://opensource.org/licenses/MIT
|
||||
|
||||
Exposes Rank Math SEO and Yoast SEO meta fields via WordPress REST API for use with MCP servers and AI agents.
|
||||
|
||||
== Description ==
|
||||
|
||||
SEO API Bridge is a WordPress plugin that exposes Rank Math SEO and Yoast SEO meta fields via dedicated REST API endpoints. This enables MCP servers, AI agents, and other applications to read and write SEO metadata programmatically for posts, pages, and WooCommerce products.
|
||||
|
||||
**Features:**
|
||||
|
||||
* **Rank Math SEO Support** — Full access to all Rank Math meta fields
|
||||
* **Yoast SEO Support** — Full access to all Yoast SEO meta fields
|
||||
* **WooCommerce Compatible** — Works with product post types
|
||||
* **Secure** — Requires WordPress Application Password and edit_posts capability
|
||||
* **Auto-Detection** — Automatically detects which SEO plugin is active
|
||||
* **Status Endpoint** — Dedicated API endpoint for plugin and SEO detection
|
||||
* **Zero Configuration** — Works out of the box after activation
|
||||
|
||||
**REST API Endpoints:**
|
||||
|
||||
* `GET/POST /wp-json/seo-api-bridge/v1/posts/{id}/seo` — Post SEO data
|
||||
* `GET/POST /wp-json/seo-api-bridge/v1/pages/{id}/seo` — Page SEO data
|
||||
* `GET/POST /wp-json/seo-api-bridge/v1/products/{id}/seo` — Product SEO data (WooCommerce)
|
||||
* `GET /wp-json/seo-api-bridge/v1/status` — Plugin status and SEO detection
|
||||
|
||||
**Designed for [MCP Hub](https://github.com/airano-ir/mcphub)** — the AI-native management hub for WordPress and self-hosted services.
|
||||
|
||||
== Installation ==
|
||||
|
||||
1. Upload the `seo-api-bridge` folder to `/wp-content/plugins/`
|
||||
2. Activate the plugin through the 'Plugins' menu in WordPress
|
||||
3. Ensure either Rank Math SEO or Yoast SEO is active
|
||||
4. The REST API endpoints are now available
|
||||
|
||||
== Frequently Asked Questions ==
|
||||
|
||||
= Which SEO plugins are supported? =
|
||||
|
||||
Rank Math SEO and Yoast SEO. The plugin auto-detects which one is active.
|
||||
|
||||
= Does it work with WooCommerce? =
|
||||
|
||||
Yes. Product SEO endpoints are available when WooCommerce is active.
|
||||
|
||||
= How is authentication handled? =
|
||||
|
||||
All endpoints require WordPress Application Password authentication and the `edit_posts` capability. POST requests require the same capability.
|
||||
|
||||
= Can I use this without MCP Hub? =
|
||||
|
||||
Yes. The REST API endpoints work with any application that can make HTTP requests with proper WordPress authentication.
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 1.3.0 =
|
||||
* Added REST API endpoints for posts, pages, and products (GET/POST operations)
|
||||
* Added authentication requirement for all endpoints
|
||||
* Fixed rank_math_title meta key registration
|
||||
|
||||
= 1.2.0 =
|
||||
* Enhanced WooCommerce product support
|
||||
* Improved MariaDB compatibility
|
||||
|
||||
= 1.1.0 =
|
||||
* Added status endpoint for plugin detection
|
||||
* Improved error handling
|
||||
|
||||
= 1.0.0 =
|
||||
* Initial release with Rank Math and Yoast SEO support
|
||||
|
||||
== Upgrade Notice ==
|
||||
|
||||
= 1.3.0 =
|
||||
GET endpoints now require authentication (edit_posts capability). Update your API clients if needed.
|
||||
@@ -1,11 +1,11 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: SEO API Bridge
|
||||
* Plugin URI: https://github.com/your-repo/seo-api-bridge
|
||||
* Plugin URI: https://github.com/airano-ir/mcphub
|
||||
* Description: Exposes Rank Math SEO and Yoast SEO meta fields via WordPress REST API for use with MCP servers and AI agents. Supports posts, pages, and WooCommerce products with full CRUD operations.
|
||||
* Version: 1.3.0
|
||||
* Author: MCP Coolify Projects
|
||||
* Author URI: https://github.com/your-repo
|
||||
* Author: MCP Hub
|
||||
* Author URI: https://github.com/airano-ir
|
||||
* License: MIT
|
||||
* Requires at least: 5.0
|
||||
* Requires PHP: 7.4
|
||||
@@ -70,7 +70,9 @@ class SEO_API_Bridge {
|
||||
[
|
||||
'methods' => 'GET',
|
||||
'callback' => [$this, 'get_post_seo'],
|
||||
'permission_callback' => '__return_true',
|
||||
'permission_callback' => function() {
|
||||
return current_user_can('edit_posts');
|
||||
},
|
||||
'args' => [
|
||||
'id' => [
|
||||
'validate_callback' => function($param) {
|
||||
@@ -100,7 +102,9 @@ class SEO_API_Bridge {
|
||||
[
|
||||
'methods' => 'GET',
|
||||
'callback' => [$this, 'get_page_seo'],
|
||||
'permission_callback' => '__return_true',
|
||||
'permission_callback' => function() {
|
||||
return current_user_can('edit_posts');
|
||||
},
|
||||
'args' => [
|
||||
'id' => [
|
||||
'validate_callback' => function($param) {
|
||||
@@ -130,7 +134,9 @@ class SEO_API_Bridge {
|
||||
[
|
||||
'methods' => 'GET',
|
||||
'callback' => [$this, 'get_product_seo'],
|
||||
'permission_callback' => '__return_true',
|
||||
'permission_callback' => function() {
|
||||
return current_user_can('edit_posts');
|
||||
},
|
||||
'args' => [
|
||||
'id' => [
|
||||
'validate_callback' => function($param) {
|
||||
@@ -246,7 +252,7 @@ class SEO_API_Bridge {
|
||||
'description' => 'Rank Math focus keyword',
|
||||
'single' => true,
|
||||
],
|
||||
'rank_math_seo_title' => [
|
||||
'rank_math_title' => [
|
||||
'type' => 'string',
|
||||
'description' => 'Rank Math SEO title (meta title)',
|
||||
'single' => true,
|
||||
|
||||
Reference in New Issue
Block a user