{"id":376707,"date":"2026-09-28T15:42:54","date_gmt":"2026-09-28T15:42:54","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/twpublisher-connector\/"},"modified":"2026-09-28T16:04:15","modified_gmt":"2026-09-28T16:04:15","slug":"twpublisher-connector","status":"publish","type":"plugin","link":"https:\/\/tg.wordpress.org\/plugins\/twpublisher-connector\/","author":23575121,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.1","stable_tag":"2.0.1","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"TWPublisher Connector","header_author":"Takeweb","header_description":"Securely connects TWPublisher to WordPress for author discovery and Rank Math SEO metadata publishing.","assets_banners_color":"","last_updated":"2026-09-28 16:04:15","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":65,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.0":{"tag":"2.0.0","author":"takeweb","date":"2026-09-28 15:34:58","revision":3717496},"2.0.1":{"tag":"2.0.1","author":"takeweb","date":"2026-09-28 16:04:15","revision":3717547}},"upgrade_notice":{"2.0.1":"<p>Improves image metadata handling, compatibility, and security.<\/p>","2.0.0":"<p>Rebranded as TWPublisher Connector. Existing endpoint URLs remain supported for compatibility.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.0","2.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[8485,441,7143,174175,23853],"plugin_category":[51],"plugin_contributors":[283221],"plugin_business_model":[],"class_list":["post-376707","plugin","type-plugin","status-publish","hentry","plugin_tags-editorial","plugin_tags-multisite","plugin_tags-publishing","plugin_tags-rank-math","plugin_tags-rest-api","plugin_category-multisite","plugin_contributors-takeweb","plugin_committers-takeweb"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/twpublisher-connector.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>TWPublisher Connector is the WordPress-side integration for TWPublisher, an editorial workflow application used to review and publish articles across multiple WordPress websites.<\/p>\n\n<p>The plugin provides two authenticated REST API capabilities:<\/p>\n\n<ul>\n<li>Lists users who have the <code>edit_posts<\/code> capability so TWPublisher can present an accurate author selector, including sites with custom roles.<\/li>\n<li>Writes and verifies the Rank Math SEO title and meta description for a specific standard WordPress post.<\/li>\n<\/ul>\n\n<p>The plugin does not create posts, upload media, collect analytics, display advertising, add front-end branding, or modify WordPress core. Post creation and media uploads use the standard WordPress REST API.<\/p>\n\n<h3>Security<\/h3>\n\n<p>Every endpoint requires an authenticated WordPress user. Application Passwords are supported through WordPress core.<\/p>\n\n<ul>\n<li>Author discovery requires the <code>edit_others_posts<\/code> capability and returns only the user ID, display name, and username of accounts that can edit posts.<\/li>\n<li>SEO updates require <code>edit_post<\/code> permission for the requested post.<\/li>\n<li>Only standard <code>post<\/code> records are accepted for SEO updates.<\/li>\n<li>Input is type checked, length limited, sanitized, stored, and verified before success is returned.<\/li>\n<li>Direct file access is blocked.<\/li>\n<\/ul>\n\n<p>Use a dedicated WordPress account with only the permissions required by your publishing workflow. Revoke its Application Password immediately if it is exposed.<\/p>\n\n<h3>Privacy and external services<\/h3>\n\n<p>This plugin does not collect telemetry, set cookies, track visitors, or contact third-party servers. It only responds to authenticated requests received by the WordPress REST API.<\/p>\n\n<p>When a site administrator intentionally connects the separate TWPublisher application, that application sends publishing data to this WordPress website. The plugin itself does not transmit WordPress data to TWPublisher or any other external service.<\/p>\n\n<p>Rank Math is not bundled with this plugin. If Rank Math is installed, TWPublisher Connector updates two Rank Math post-meta fields requested by the authenticated publishing client.<\/p>\n\n<h3>REST API<\/h3>\n\n<pre><code>GET \/wp-json\/twpublisher\/v1\/authors\n<\/code><\/pre>\n\n<p>Returns eligible post authors. Requires <code>edit_others_posts<\/code>.<\/p>\n\n<pre><code>POST \/wp-json\/twpublisher\/v1\/rank-math\n<\/code><\/pre>\n\n<p>Accepts <code>post_id<\/code>, <code>title<\/code>, and <code>description<\/code>. Requires permission to edit the specified post.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>If the former Article Publisher Rank Math Bridge is installed, deactivate and delete that plugin first. Its settings are not stored in WordPress, so no site data is removed.<\/li>\n<li>Upload the <code>twpublisher-connector<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP from Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate TWPublisher Connector.<\/li>\n<li>In WordPress, create an Application Password for the account TWPublisher will use.<\/li>\n<li>In TWPublisher Settings, add the website URL, username, and Application Password.<\/li>\n<li>Use <code>\/wp-json\/twpublisher\/v1\/rank-math<\/code> as the Rank Math endpoint.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20publish%20posts%3F\"><h3>Does this plugin publish posts?<\/h3><\/dt>\n<dd><p>TWPublisher publishes posts through the standard WordPress REST API. This connector handles author discovery and Rank Math metadata only.<\/p><\/dd>\n<dt id=\"why%20is%20the%20author%20endpoint%20needed%3F\"><h3>Why is the author endpoint needed?<\/h3><\/dt>\n<dd><p>WordPress installations with custom roles can allow users to author posts while excluding them from the core REST API's legacy author filter. The connector checks the actual <code>edit_posts<\/code> capability.<\/p><\/dd>\n<dt id=\"does%20it%20expose%20the%20wordpress%20user%20database%3F\"><h3>Does it expose the WordPress user database?<\/h3><\/dt>\n<dd><p>No. The endpoint requires authentication and <code>edit_others_posts<\/code>. It returns only IDs, display names, and usernames for users capable of editing posts. It does not return email addresses, passwords, or profile metadata.<\/p><\/dd>\n<dt id=\"does%20it%20send%20data%20to%20an%20external%20service%3F\"><h3>Does it send data to an external service?<\/h3><\/dt>\n<dd><p>No. The plugin does not initiate external requests. It responds only when an authenticated client calls its REST endpoints.<\/p><\/dd>\n<dt id=\"are%20old%20article%20publisher%20endpoints%20supported%3F\"><h3>Are old Article Publisher endpoints supported?<\/h3><\/dt>\n<dd><p>Yes. Version 2.0 retains the previous endpoint namespace as a compatibility alias so existing configured sites keep working during migration.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20automatic%20updates%3F\"><h3>Does the plugin support automatic updates?<\/h3><\/dt>\n<dd><p>WordPress can provide standard automatic updates after TWPublisher Connector is approved and hosted in the WordPress.org Plugin Directory. The plugin intentionally does not install updates from a custom server.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fixed image metadata handling.<\/li>\n<li>Improved compatibility and security.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Renamed the plugin to TWPublisher Connector.<\/li>\n<li>Added the TWPublisher REST namespace while retaining legacy routes.<\/li>\n<li>Expanded security, privacy, installation, and usage documentation.<\/li>\n<li>Detects eligible authors using the <code>edit_posts<\/code> capability for custom-role compatibility.<\/li>\n<li>Returns current WordPress display names and usernames.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Added current WordPress usernames alongside author display names.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added a capability-protected list of users eligible to author posts.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Reorganized the plugin into a conventional bootstrap and class structure.<\/li>\n<li>Retained capability checks, post-type restrictions, validation, and verification.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added strict input validation and post-level authorization.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Securely connects the TWPublisher editorial application to WordPress for author discovery and Rank Math SEO metadata publishing.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=376707"}],"author":[{"embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/takeweb"}],"wp:attachment":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376707"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376707"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376707"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376707"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376707"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}