{"id":11866,"date":"2026-09-18T16:06:42","date_gmt":"2026-09-18T08:06:42","guid":{"rendered":"https:\/\/aeosub.com\/closehub-connector\/"},"modified":"2026-09-18T16:06:42","modified_gmt":"2026-09-18T08:06:42","slug":"closehub-connector","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/closehub-connector\/","title":{"rendered":"CloseHub Connector"},"content":{"rendered":"<div class=\"post-img\" style=\"margin-bottom: 25px\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/closehub-connector\/assets\/banner-1544x500.png?rev=3592190\" alt=\"CloseHub Connector\" loading=\"lazy\" style=\"width: 100%;height: auto;border-radius: 12px\"><\/div>\n<div class=\"plugin-expert-review\" style=\"border: 1px solid #e2e8f0;border-left: 4px solid #4a3bca;border-radius: 10px;padding: 20px;margin-bottom: 25px;background: #fff;font-family: -apple-system, system-ui, sans-serif\">\n<div style=\"font-weight: bold;font-size: 1.1em;color: #4a3bca;margin-bottom: 10px\">LethaldiranMX Insight<\/div>\n<div style=\"color: #4a5568;font-size: 14px;line-height: 1.6\">\n<div>\n<p>The CloseHub Connector represents a sophisticated shift in how agencies manage WordPress deployments, evolving from a simple statistics reporter into a highly capable Model Context Protocol (MCP) gateway. By exposing a dedicated REST API namespace and a robust MCP adapter, it allows external LLMs and marketing platforms to interact directly with WordPress content, Gutenberg blocks, and WooCommerce data using granular user capabilities. This architecture significantly streamlines programmatic content curation and automated go-live checklists, making it an invaluable tool for modern, AI-assisted digital operations.<\/p>\n<p><strong>Best Fit &amp; Operational Role:<\/strong> This plugin is an ideal fit for agency environments, multisite networks, and enterprise teams utilizing CloseHub as their central marketing project management hub. It acts as an operational bridge, eliminating credential bloat by replacing multiple legacy connection points with a single API key for statistics, while leveraging native WordPress user roles for its advanced MCP capabilities. Teams looking to automate content updates, safely execute database-wide search-and-replace operations during migrations, or query complex WooCommerce subscription data via external AI agents will find this a highly efficient addition to their utility stack.<\/p>\n<p><strong>Potential Limitations &amp; Pitfalls:<\/strong> While the plugin implements solid safeguards\u2014such as using content hashes to prevent stale Gutenberg block overwrites and restricting destructive actions to specific WordPress capabilities\u2014the exposure of database-altering endpoints like domain search-and-replace introduces inherent operational risks if user permissions are misconfigured. Administrators must ensure strict API security and role management, as any compromised account with administrative privileges could trigger sweeping database modifications or alter robots.txt configurations remotely.<\/p>\n<\/div>\n<\/div><\/div>\n<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<div style=\"padding: 20px;border-bottom: 1px solid #edf2f7;background: #fafafa;display: flex;align-items: flex-start\">\n                <img decoding=\"async\" src=\"https:\/\/ps.w.org\/closehub-connector\/assets\/icon-256x256.png?rev=3592190\" alt=\"CloseHub Connector icon\" loading=\"lazy\" style=\"width: 45px;height: 45px;border-radius: 8px;margin-right: 15px\"> <\/p>\n<div style=\"flex: 1;line-height: 1.2\">\n<div style=\"font-weight: bold;font-size: 1.1em;color: #1a202c\">Plugin Specification<\/div>\n<p>                    <small style=\"color: #718096\">WordPress.org Official Data<\/small>\n                <\/div>\n<\/p><\/div>\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\">Developer<\/th>\n<td style=\"padding: 12px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/closetechnology\/\" target=\"_blank\" rel=\"noopener\">Close\u00b7technology<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.1.2<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">20 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.4 \/ 7.1.1<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-09-18 8:05am GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/closehub-connector\/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\">View Details -&gt;<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Connect your WordPress site to CloseHub with a single API key in order to send statistics.<\/div>\n<p>CloseHub Connector replaces the multiple credentials previously required to link a WordPress site with <a href=\"https:\/\/close.marketing\/closehub\/\" rel=\"nofollow ugc noopener\" target=\"_blank\">CloseHub<\/a> \u2014 a marketing project management platform.<\/p>\n<p>Once the plugin is activated, it generates a secure API key and exposes a dedicated REST API namespace (<code>\/wp-json\/closehub\/v1\/<\/code>) that CloseHub uses to interact with your site.<\/p>\n<p>It also exposes content abilities through the WordPress MCP Adapter. MCP clients can discover, list, read, create, update, update a post slug, replace one exact Gutenberg block, and send posts to the trash using the server at <code>\/wp-json\/mcp\/mcp-adapter-default-server<\/code>. <code>closehub\/update-post-slug<\/code> accepts a post ID and slug, then returns the normalized unique slug and resulting URL. <code>closehub\/get-post<\/code> returns a <code>content_hash<\/code>; use it with <code>closehub\/replace-gutenberg-block<\/code>, a zero-based <code>block_path<\/code>, the current block name, and one replacement serialized block so a stale read cannot overwrite newer content. These abilities default to the <code>post<\/code> type but accept a <code>post_type<\/code> input for any other post type registered with an admin UI \u2014 pages, WooCommerce products (including product types WooCommerce&#8217;s own MCP abilities don&#8217;t support, such as subscriptions), or custom post types. Authenticate with a WordPress user account that has the required post capabilities; the CloseHub API key is not used for MCP authentication.<\/p>\n<p>For WooCommerce, MCP clients with the <code>manage_woocommerce<\/code> capability can retrieve an order summary for a date range, including order count, total sales, average order value, and matching orders.<\/p>\n<p>It also exposes a set of &#8220;site&#8221; abilities for the CLOSE web go-live checklist \u2014 configuration steps that used to be manual or wp-cli only. Each requires the WordPress capability noted below.<\/p>\n<p><strong>Available MCP site abilities:<\/strong><\/p>\n<ul>\n<li><code>closehub\/search-replace-domain<\/code> (<code>manage_options<\/code>) \u2014 Replace <code>old_domain<\/code> with <code>new_domain<\/code> across post content, options, comments, and meta tables, re-serializing serialized values safely. Skips <code>wp_posts.guid<\/code>. Pass <code>dry_run: true<\/code> to preview the number of rows that would change per table without writing anything. Example: <code>{ \"old_domain\": \"staging.example.com\", \"new_domain\": \"example.com\" }<\/code>.<\/li>\n<li><code>closehub\/set-robots-txt<\/code> (<code>manage_options<\/code>) \u2014 Write <code>content<\/code> to <code>robots.txt<\/code>, physically if the site root is writable, otherwise served virtually through the <code>robots_txt<\/code> filter. Example: <code>{ \"content\": \"User-agent: *nDisallow:nSitemap: https:\/\/example.com\/sitemap.xml\" }<\/code>.<\/li>\n<li><code>closehub\/set-post-noindex<\/code> (<code>edit_post<\/code> on the target <code>post_id<\/code>) \u2014 Set or clear the noindex robots meta for one post\/page using whichever SEO plugin (Rank Math or Yoast) is active. Example: <code>{ \"post_id\": 42, \"noindex\": true }<\/code>.<\/li>\n<li><code>closehub\/flush-permalinks<\/code> (<code>manage_options<\/code>) \u2014 Regenerate rewrite rules, equivalent to <code>wp rewrite flush<\/code>. Takes no parameters.<\/li>\n<li><code>closehub\/get-htaccess<\/code> (<code>manage_options<\/code>, read-only) \u2014 Return whether <code>.htaccess<\/code> exists and its current content. Takes no parameters.<\/li>\n<li><code>closehub\/set-site-settings<\/code> (<code>manage_options<\/code>) \u2014 Update the site timezone and\/or admin email; at least one is required. Example: <code>{ \"timezone\": \"Europe\/Madrid\", \"admin_email\": \"client@example.com\" }<\/code>.<\/li>\n<li><code>closehub\/reassign-posts-author<\/code> (<code>edit_others_posts<\/code>) \u2014 Reassign every post of <code>post_type<\/code> (default <code>post<\/code>) from <code>from_author_id<\/code> to <code>to_author_id<\/code>, with a per-post success result. Example: <code>{ \"from_author_id\": 3, \"to_author_id\": 1 }<\/code>.<\/li>\n<li><code>closehub\/install-wp-org-plugin<\/code> (<code>install_plugins<\/code>) \u2014 Install (without activating) a plugin from the WordPress.org plugin directory by <code>slug<\/code>. Example: <code>{ \"slug\": \"two-factor\" }<\/code>.<\/li>\n<li><code>closehub\/list-unused-plugins<\/code> (<code>activate_plugins<\/code>, read-only) \u2014 List installed plugins that are not currently active, as removal candidates. Takes no parameters.<\/li>\n<li><code>closehub\/update-plugins-and-core<\/code> (<code>update_plugins<\/code> and <code>update_core<\/code>) \u2014 Update every plugin with an available update and WordPress core to the latest version, with a per-plugin success result. Takes no parameters.<\/li>\n<li><code>closehub\/create-site-user<\/code> (<code>create_users<\/code>, plus <code>promote_users<\/code> when <code>role<\/code> is <code>administrator<\/code>) \u2014 Create a WordPress user for the site&#8217;s client. <code>role<\/code> defaults to <code>editor<\/code>; <code>username<\/code> defaults to the local part of <code>email<\/code> when omitted. Example: <code>{ \"email\": \"client@example.com\", \"role\": \"editor\" }<\/code>.<\/li>\n<\/ul>\n<p><strong>What it replaces:<\/strong><\/p>\n<ul>\n<li>WordPress Application Password (username + password)<\/li>\n<li>WooCommerce REST API consumer key and consumer secret<\/li>\n<li>Gravity Forms API key<\/li>\n<\/ul>\n<p><strong>You only need to share two things with CloseHub:<\/strong><\/p>\n<ol>\n<li>Your site URL<\/li>\n<li>The generated API key (found at Settings <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> CloseHub)<\/li>\n<\/ol>\n<p><strong>Available endpoints:<\/strong><\/p>\n<ul>\n<li><code>GET \/closehub\/v1\/ping<\/code> \u2014 verify the connection<\/li>\n<li><code>POST \/closehub\/v1\/posts<\/code> \u2014 publish or draft a post (or another post type via <code>post_type<\/code>), including optional SEO metadata (Rank Math or Yoast), featured image, and categories<\/li>\n<li><code>PUT \/closehub\/v1\/posts\/{id}<\/code> \u2014 update a post&#8217;s (or other post type&#8217;s) title, content, excerpt, status, SEO metadata, featured image, or categories<\/li>\n<li><code>GET \/closehub\/v1\/woocommerce\/orders<\/code> \u2014 fetch order data (requires WooCommerce)<\/li>\n<li><code>GET \/closehub\/v1\/gravity-forms\/forms<\/code> \u2014 list forms (requires Gravity Forms)<\/li>\n<li><code>GET \/closehub\/v1\/gravity-forms\/forms\/{id}<\/code> \u2014 get form details<\/li>\n<li><code>GET \/closehub\/v1\/gravity-forms\/forms\/{id}\/entries<\/code> \u2014 count form entries by date range<\/li>\n<\/ul>\n<p>WooCommerce and Gravity Forms endpoints return a clear error if those plugins are not active \u2014 they are not required.<\/p>\n<p><strong>Multisite networks:<\/strong><\/p>\n<p>On a WordPress Multisite network, the same endpoints listed above are shared by every site in the network \u2014 there is no separate namespace or key to manage. Activate the plugin network-wide and go to <strong>Network Admin <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> Settings <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> CloseHub<\/strong> to find one API key shared by the whole network. Every request to those endpoints automatically returns a <code>sites<\/code> array with one entry per site in the network (<code>site_id<\/code>, <code>url<\/code>, and that site&#8217;s data or an <code>error<\/code> message), instead of a single site&#8217;s result \u2014 handy when a network is used to run the same company in multiple languages.<\/p>\n<div class=\"plugin-editorial-note\" style=\"margin-top: 25px;padding: 12px 15px;background: #f8fafc;border-radius: 6px;color: #64748b;font-size: 13px;line-height: 1.5\">Editorial note: This overview combines WordPress.org official plugin metadata with an AI-assisted LethaldiranMX editorial review. Plugin data should be verified on the official WordPress.org listing before installation.<\/div>","protected":false},"excerpt":{"rendered":"<p>Connect your WordPress site to CloseHub with a single API key in order to send statistics.<\/p>","protected":false},"author":1,"featured_media":11867,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[716,3078,1536,717,569,555],"class_list":["post-11866","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-api","tag-closehub","tag-gravity-forms","tag-integration","tag-woocommerce","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11866","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=11866"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11866\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/11867"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=11866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=11866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=11866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}