{"id":398269,"date":"2026-11-10T18:34:52","date_gmt":"2026-11-10T18:34:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/taler-seo-connector\/"},"modified":"2026-11-10T18:34:28","modified_gmt":"2026-11-10T18:34:28","slug":"optiwebopz-seo-connector","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/optiwebopz-seo-connector\/","author":23598536,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.4.2","stable_tag":"2.4.2","tested":"7.1.4","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"OptiWebOpz SEO","header_author":"Optiwebopz","header_description":"Connects this WordPress site to Taler and adds Optiwebopz SEO: titles, meta, Open Graph, canonical and robots; one schema graph (Article, FAQ, Breadcrumb, Organization or LocalBusiness, Product); XML and image sitemaps; redirects and a 404 monitor; a per-post analysis panel with Taler's checks; and search performance from Taler (Search Console data stays in Taler). Works next to Rank Math, Yoast or All in One SEO (Optiwebopz SEO output stays off while one is active). Keeps every Taler route: drafts, the Taler post editor, media upload, publishing and Taler-held scheduling.","last_updated":"2026-11-10 18:34:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/taler.optiwebopz.com\/","header_author_uri":"https:\/\/optiwebopz.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":42,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.4.2":{"tag":"2.4.2","author":"optiwebopz","date":"2026-11-10 18:34:28","revision":3795029}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3795029,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3795029,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3795029,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3795029,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.4.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3795029,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3795029,"resolution":"2","location":"assets","locale":"","width":1000,"height":1135},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3795029,"resolution":"3","location":"assets","locale":"","width":1280,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3795029,"resolution":"4","location":"assets","locale":"","width":1280,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3795029,"resolution":"5","location":"assets","locale":"","width":1280,"height":900}},"screenshots":{"1":"Overview: what runs on this site, the take-over switch and the modules.","2":"The SEO box under the post editor: SEO fields and the checks behind the content score.","3":"Performance: content scores and how they change, measured on the site itself.","4":"Recommendations: what to change, the biggest gain first.","5":"Import: what Yoast SEO, Rank Math or All in One SEO hold, before anything is copied."}},"plugin_section":[],"plugin_tags":[5777,726,1117,186,1557],"plugin_category":[55],"plugin_contributors":[291911],"plugin_business_model":[],"class_list":["post-398269","plugin","type-plugin","status-publish","hentry","plugin_tags-meta-description","plugin_tags-redirects","plugin_tags-schema","plugin_tags-seo","plugin_tags-sitemap","plugin_category-seo-and-marketing","plugin_contributors-optiwebopz","plugin_committers-optiwebopz"],"banners":{"banner":"https:\/\/ps.w.org\/optiwebopz-seo-connector\/assets\/banner-772x250.png?rev=3795029","banner_2x":"https:\/\/ps.w.org\/optiwebopz-seo-connector\/assets\/banner-1544x500.png?rev=3795029","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/optiwebopz-seo-connector\/assets\/icon-128x128.png?rev=3795029","icon_2x":"https:\/\/ps.w.org\/optiwebopz-seo-connector\/assets\/icon-256x256.png?rev=3795029","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/optiwebopz-seo-connector\/assets\/screenshot-1.png?rev=3795029","caption":"Overview: what runs on this site, the take-over switch and the modules."},{"src":"https:\/\/ps.w.org\/optiwebopz-seo-connector\/assets\/screenshot-2.png?rev=3795029","caption":"The SEO box under the post editor: SEO fields and the checks behind the content score."},{"src":"https:\/\/ps.w.org\/optiwebopz-seo-connector\/assets\/screenshot-3.png?rev=3795029","caption":"Performance: content scores and how they change, measured on the site itself."},{"src":"https:\/\/ps.w.org\/optiwebopz-seo-connector\/assets\/screenshot-4.png?rev=3795029","caption":"Recommendations: what to change, the biggest gain first."},{"src":"https:\/\/ps.w.org\/optiwebopz-seo-connector\/assets\/screenshot-5.png?rev=3795029","caption":"Import: what Yoast SEO, Rank Math or All in One SEO hold, before anything is copied."}],"raw_content":"<!--section=description-->\n<p>OptiWebOpz SEO is a complete SEO plugin for WordPress. It works on its own: it needs no account, and nothing leaves your\nsite unless an administrator switches a feature on. Its screens are under Optiwebopz SEO in wp-admin.<\/p>\n\n<p>Connecting the site to Taler (https:\/\/taler.optiwebopz.com\/), a separate AI blog and SEO service, is optional and needs a\nTaler account and a site key: see \"The connection to Taler\" below. OptiWebOpz SEO is not affiliated with or endorsed by\nthe GNU Taler project.<\/p>\n\n<h4>Titles and meta tags<\/h4>\n\n<ul>\n<li>SEO title and meta description for every post, page and public custom post type, with title templates and a separator\n(Optiwebopz SEO \u2192 Titles &amp; schema);<\/li>\n<li>canonical links, robots rules (noindex \/ nofollow per post, noindex rules for author, date and tag archives);<\/li>\n<li>Open Graph and Twitter tags, with a default sharing image;<\/li>\n<li>SEO title, meta description and noindex for categories, tags and every other public taxonomy.<\/li>\n<\/ul>\n\n<h4>Schema<\/h4>\n\n<ul>\n<li>one JSON-LD graph per page: website (with site search), web page, organization or local business (address, phone,\nopening hours, location), breadcrumbs, articles, FAQ, and products with offers, brand and ratings for WooCommerce;<\/li>\n<li>the article type and the organization details are set once, under Titles &amp; schema.<\/li>\n<\/ul>\n\n<h4>XML sitemaps<\/h4>\n\n<ul>\n<li>a sitemap index at \/taler-sitemap.xml with posts, pages, products, public custom post types, categories and tags, with\nimage entries; listed in robots.txt, and \/sitemap.xml, \/sitemap_index.xml and \/wp-sitemap.xml redirect to it;<\/li>\n<li>choose which post types and taxonomies are included.<\/li>\n<\/ul>\n\n<h4>Redirects and 404 log<\/h4>\n\n<ul>\n<li>redirects with codes 301, 302, 307 and 410, for exact addresses or patterns (contains, starts with, ends with, regular\nexpression); unsafe or slow regular expressions are refused;<\/li>\n<li>a 404 log of addresses not found, with \"Redirect it\", and old rows removed after 90 days (setting).<\/li>\n<\/ul>\n\n<h4>Post checks and content score<\/h4>\n\n<ul>\n<li>an \"Optiwebopz SEO\" box under the post editor: SEO title, description, focus keyword and secondary keywords, social\ntitle, description and image, canonical, robots, breadcrumb title and article type, with offline checks of the post;<\/li>\n<li>a content score from 0 to 100 for every published post (headings, length, sentences and paragraphs, keywords, links,\nimages, structured data), an \"SEO score\" column with a filter in the post lists;<\/li>\n<li>Performance: content scores and how they change over time, posts missing titles, descriptions or keywords, old posts,\ntext length, the 404 log, redirects, internal links, images without alt text and sitemap addresses. Measured on your\nsite; nothing is sent anywhere;<\/li>\n<li>Recommendations: what to change, the biggest gain first, each with the reason. Advice only: nothing is changed for you.<\/li>\n<\/ul>\n\n<h4>Internal links<\/h4>\n\n<ul>\n<li>a link index of which posts link to which, link counts in the post lists, posts nobody links to, and link ideas while\nediting a post.<\/li>\n<\/ul>\n\n<h4>Images<\/h4>\n\n<ul>\n<li>images in the media library without alt text, each with a suggestion you can change; save page by page or fill all;<\/li>\n<li>optional: alt text added on the page for images that have none (off by default).<\/li>\n<\/ul>\n\n<h4>Bulk edit and roles<\/h4>\n\n<ul>\n<li>bulk edit of SEO titles, meta descriptions and noindex, many posts on one screen;<\/li>\n<li>roles: which roles may use the SEO screens and see the post box, and which may change noindex, canonical and the\narticle type.<\/li>\n<\/ul>\n\n<h4>Import from another SEO plugin<\/h4>\n\n<ul>\n<li>copies SEO titles, descriptions, focus and extra keywords, canonical links, robots settings, social titles,\ndescriptions and images, breadcrumb titles, article types, category and tag SEO, site-wide settings (title templates,\norganization or local business, logo, sharing image, social profiles, archive noindex, sitemap contents), redirects and\nRank Math's 404 log from Yoast SEO, Rank Math or All in One SEO;<\/li>\n<li>shows what each plugin holds, makes a preview that changes nothing (with every conflict and value that needs review),\ncopies only after you confirm, logs every value it wrote and can undo an import. It only reads the other plugin's data.\nAdministrators only, one batch per click, entirely on your site.<\/li>\n<\/ul>\n\n<h4>WooCommerce<\/h4>\n\n<ul>\n<li>GTIN, MPN and brand fields in the product schema, and filtered or sorted shop pages kept out of search results.<\/li>\n<\/ul>\n\n<h4>IndexNow (off by default)<\/h4>\n\n<ul>\n<li>tells Bing and the other IndexNow engines when a public page is published or changed.<\/li>\n<\/ul>\n\n<h4>Setup, shortcodes and tools<\/h4>\n\n<ul>\n<li>an optional eight-step setup (Optiwebopz SEO \u2192 Setup); every step can be skipped;<\/li>\n<li>shortcodes [taler_breadcrumbs] (a breadcrumb trail) and [taler_html_sitemap] (a list of posts and pages);<\/li>\n<li>background work through Action Scheduler when another plugin provides it, or the WP-CLI command wp taler-cx jobs run;\nWordPress cron is never used;<\/li>\n<li>while Yoast SEO, Rank Math or All in One SEO is active, OptiWebOpz SEO prints nothing in the page head, so there is\nnever a second set of tags.<\/li>\n<\/ul>\n\n<h4>Search performance (with Taler)<\/h4>\n\n<ul>\n<li>Google Search Console clicks, impressions, average position, the queries behind each post and Google's index status,\nand, when Taler stores them, Google Analytics 4 visits and the most-visited pages. Read from Taler when the site is\nconnected (Optiwebopz SEO \u2192 Search performance and the post box); the plugin holds no Google key.<\/li>\n<\/ul>\n\n<h4>What runs by default<\/h4>\n\n<p>Right after activation, with nothing switched on and no Taler account:<\/p>\n\n<ul>\n<li>the Optiwebopz SEO screens in wp-admin;<\/li>\n<li>the internal link index: built by the background work after activation (see Installation), updated when a post is saved,\nwith a \"Links\" column in the wp-admin post lists;<\/li>\n<li>on posts that Taler created (and only those): a table of contents when the post has at least three sections and the\nsite has none of its own, the FAQ schema of the FAQ Taler wrote, and, while no SEO plugin is active, a meta description,\nOpen Graph \/ Twitter tags and one article schema.<\/li>\n<\/ul>\n\n<p>Off until you switch them on: the titles, meta tags, schema, sitemaps and post box (one switch, \"Use Optiwebopz SEO on this\nsite\", which works only while Rank Math, Yoast SEO and All in One SEO are inactive), redirects and the 404 log, IndexNow,\nthe missing-alt output, the \"By author\" line on Taler posts, and the optional link features (sending performance numbers\nto Taler, and each way of applying Taler's suggestions; Settings \u2192 Optiwebopz SEO Connector). While another SEO plugin is\nactive, OptiWebOpz SEO prints nothing in the page head and Taler writes its SEO fields into that plugin.<\/p>\n\n<h4>The connection to Taler<\/h4>\n\n<p>With a site key, Taler can create and rewrite drafts, load posts into its post editor, change and publish them, upload\nimages and set the featured image and FAQ schema, and keep a snapshot before every change that can be restored from\nTaler. Optional link features, each off until you switch it on: send this site's performance numbers to Taler, ask\nTaler to read the site, and apply Taler's suggestions for SEO titles, descriptions, focus keywords and social text\n(Optiwebopz SEO \u2192 Suggestions, with a change log and Undo). See \"External services\" below for exactly what each key\nallows and what is sent.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin can connect to two external services. Neither is contacted until the site's administrator sets it up, and\nthe plugin sends no tracking or usage data of any kind.<\/p>\n\n<p><strong>Taler<\/strong> (https:\/\/taler.optiwebopz.com\/, an AI blog and SEO service; the address is the one the administrator enters in\nSettings \u2192 Optiwebopz SEO Connector).<\/p>\n\n<p>From this site to Taler \u2014 used to show Google Search Console numbers (clicks, impressions, positions, searches), Google\nindex status, Google Analytics 4 visits when Taler stores them, and Taler's checks on Optiwebopz SEO \u2192 Search performance and in the Optiwebopz SEO box. Search Console data is read\nby Taler; the plugin holds no Google sign-in, key or token and never contacts Google:<\/p>\n\n<ul>\n<li>When: only while an administrator or editor opens Optiwebopz SEO \u2192 Search performance or a post's Optiwebopz SEO box, at most once\nper page and data type every 6 to 12 hours (answers are cached; the \"Ask Taler again\" button asks again), and only after\na site key and the Taler address are set. Never on the public site. Disconnecting deletes the cached answers.<\/li>\n<li>What is sent: this site's address, the name of the data asked for (overview, posts, one post, queries), the post's\naddress when one post is asked for, the list page and sort order, a time stamp, a random one-time value, the plugin\nversion and a signature made with the site key. No visitor data, no user accounts, no post content.<\/li>\n<\/ul>\n\n<p>From Taler to this site \u2014 Taler calls this plugin's REST routes (namespace taler\/v1). Treat the site key like a password:\nwhoever has it can do everything below.<\/p>\n\n<ul>\n<li>With the site key: check the connection (WordPress, PHP and plugin versions, which SEO plugin is active); create drafts\n(never published on their own) and rewrite drafts; read any blog post (title, text, excerpt, status, author, categories,\ntags, SEO fields, FAQ, featured image) and the list of its revisions and snapshots; list posts and drafts; change the\ntitle, excerpt, SEO title, SEO description and focus keyword of any blog post, published posts included; switch the table of contents\nand the \"By author\" line on Taler posts (an administrator's own choice in Settings \u2192 Optiwebopz SEO Connector always wins).<\/li>\n<li>With the media key (derived from the site key): upload images to the media library and set the featured image of a\ndraft.<\/li>\n<li>With the publish key (derived from the site key) and a single-use token: change the text, slug, tags and category of a\npublished post, its SEO and social fields, robots rules, article schema and custom JSON-LD, its FAQ schema and featured\nimage; publish a draft (also at a time scheduled in Taler); restore a snapshot. Each token is valid for 10 minutes, for one\npost, one action and the exact content; the change is refused if the post was edited in WordPress after Taler loaded it,\nand a snapshot of the post is kept before it (the newest 20 per post).<\/li>\n<li>Taler Terms of Service: https:\/\/taler.optiwebopz.com\/terms<\/li>\n<li>Taler Privacy Policy: https:\/\/taler.optiwebopz.com\/privacy<\/li>\n<\/ul>\n\n<p><strong>Optional link features (from 2.3.4).<\/strong> Each one is off until the site owner switches it on in Settings \u2192 Optiwebopz SEO Connector, and works only while the site is linked to Taler (a site key and the Taler address are set).<\/p>\n\n<ul>\n<li>Performance numbers, from this site to Taler (the Taler address above): sent only while \"Send performance numbers to Taler\" is on, once a day through the plugin's background jobs (Action Scheduler when another plugin provides it, otherwise a server cron running wp taler-cx jobs run) and when an administrator clicks \"Send now\". Never when a page is opened and never on the public site. What is sent: whole numbers only, counted on this site: published posts; posts with a content score; the average content score; posts with a good, OK and needs-work score; posts with something to fix; posts by text length (under 300, 300 to 599, 600 to 1,199, 1,200 or more words, no readable text); posts without an SEO title, a meta description or a focus keyword; posts set to noindex; posts not updated in 6 and in 12 months; 404 addresses, 404 requests and new 404 addresses in 7 and in 30 days; redirects switched on, all redirects, redirect uses, redirects used in 30 days and redirects never used; posts nobody links to, posts and internal links in the link index; images without alt text; addresses in the XML sitemap. With them: this site's address, a time stamp, a random one-time value, the plugin version and a signature made with the site key. No post titles, text or addresses, no user data and no visitor data.<\/li>\n<li>Crawl request, from this site to Taler: sent only when an administrator clicks \"Ask Taler to read this site\", at most once a day. What is sent: this site's address, a time stamp, a random one-time value, the plugin version and a signature. Taler then reads this site's public pages, as a visitor's browser would, to keep its knowledge of the site up to date.<\/li>\n<li>Suggestions arrive from Taler: Taler sends suggested changes to a post's or page's SEO title, meta description, focus keyword, social title or social description, each with its reason, signed with a key derived from the site key. They are stored on this site and listed in Optiwebopz SEO \u2192 Suggestions. Nothing changes on a post until a suggestion is applied, and only in a way the site owner switched on (all off by default): an editor clicks Apply; Taler applies it (from the Taler app, its API or its Claude connector); or automatic apply. Automatic apply happens only when the site owner turns it on, only for SEO titles and meta descriptions, and at most the daily number set there. \"Stop remote and automatic changes\" turns both of those off at once. Every applied change keeps a copy of the post first, is listed with who or what applied it, when, and the old and new value, and can be undone.<\/li>\n<\/ul>\n\n<p><strong>IndexNow<\/strong> (https:\/\/api.indexnow.org\/indexnow). Off by default; used only when an administrator switches IndexNow on\nin Optiwebopz SEO (and only while Optiwebopz SEO is on and no other SEO plugin is active).<\/p>\n\n<ul>\n<li>When: after a public post or page is published or changed, at most 100 addresses per send and at least 60 seconds apart.<\/li>\n<li>What is sent: this site's host name, the site's public IndexNow key (which the plugin creates and shows at\n\/.txt, as the protocol requires) and the addresses of the changed pages. Nothing else.<\/li>\n<li>IndexNow shares the addresses with the participating search engines (for example Bing); Google does not take part.<\/li>\n<li>IndexNow terms: https:\/\/www.indexnow.org\/terms \u00b7 documentation: https:\/\/www.indexnow.org\/documentation\n(IndexNow does not publish a separate privacy policy.)<\/li>\n<\/ul>\n\n<p>The plugin loads no code, fonts, images or scripts from any other site. Importing from Yoast SEO, Rank Math or All in One\nSEO happens entirely on this site and makes no network call. A suggested privacy policy text is in Settings \u2192 Privacy \u2192\nPolicy Guide.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In WordPress: Plugins \u2192 Add New Plugin \u2192 search for \"OptiWebOpz SEO\" \u2192 Install Now \u2192 Activate.<\/li>\n<li>Optiwebopz SEO works on its own: open Optiwebopz SEO \u2192 Setup, or Optiwebopz SEO \u2192 Overview and switch \"Use Optiwebopz SEO on this site\" on\n(only possible while no other SEO plugin is active). Steps 3 and 4 are only needed to connect the site to a Taler account.<\/li>\n<li>Settings \u2192 Optiwebopz SEO Connector \u2192 \"Generate a site key\" (shown once) \u2014 or paste a key you created in Taler.<\/li>\n<li>In Taler: Settings \u2192 Sites \u2192 this site \u2192 paste the same key as the Site key \u2192 Save \u2192 \"Test key\".<\/li>\n<\/ol>\n\n<p>Optional: set the key in wp-config.php instead: define('TALER_SITE_KEY', 'your-key');<\/p>\n\n<p>To see search data from Taler, also enter the Taler app address (https) in Settings \u2192 Optiwebopz SEO Connector.<\/p>\n\n<p>Background work (for example building the link index or removing old 404 rows) runs through Action Scheduler when another\nplugin already provides it (WooCommerce does). Otherwise it waits for a signed call to taler\/v1\/jobs\/run or a server cron\nrunning: wp taler-cx jobs run\nWordPress's own cron is never used.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20taler%20account%3F\"><h3>Do I need a Taler account?<\/h3><\/dt>\n<dd><p>No, not for Optiwebopz SEO, the import and the shortcodes. Drafts from Taler, the Taler post editor, publishing from Taler and\nsearch data from Taler need a Taler account and a site key.<\/p><\/dd>\n<dt id=\"does%20it%20replace%20yoast%20seo%20or%20rank%20math%3F\"><h3>Does it replace Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>It can. Import their data first (Optiwebopz SEO \u2192 Import; the other plugin's data is only read, never changed), deactivate the\nother plugin, then switch \"Use Optiwebopz SEO on this site\" on. While Yoast SEO, Rank Math or All in One SEO is active, Optiwebopz SEO\nprints nothing in the page head, so there is never a second set of tags; Taler then writes its SEO fields into that plugin.<\/p><\/dd>\n<dt id=\"what%20data%20leaves%20my%20site%3F\"><h3>What data leaves my site?<\/h3><\/dt>\n<dd><p>Nothing until an administrator sets it up. With a site key and the Taler address set, opening Optiwebopz SEO \u2192 Search performance or a\npost's Optiwebopz SEO box asks Taler for search data (details under External services). Taler itself reads and writes posts\nthrough this plugin's REST routes with the site key. If you switch IndexNow on, the addresses of changed public pages go to\nIndexNow. If you switch on \"Send performance numbers to Taler\", whole numbers counted on this site (no titles, text or\naddresses) go to Taler once a day and when you click \"Send now\". There is no tracking, no usage data and nothing about your\nvisitors.<\/p><\/dd>\n<dt id=\"how%20do%20i%20import%20from%20another%20seo%20plugin%3F\"><h3>How do I import from another SEO plugin?<\/h3><\/dt>\n<dd><p>Optiwebopz SEO \u2192 Import (administrators). Pick the plugin and the parts, make a preview (it changes nothing), check the conflicts\nand the values that need review, tick the confirm box and copy. Every value written is logged and the whole import can be\nundone from the same screen.<\/p><\/dd>\n<dt id=\"i%20have%20an%20older%20copy%3A%20%22taler%20seo%20connector%22%20%28folder%20taler-seo-connector%29%20or%20%22taler%20connector%22%20%28folder%20taler-connector%29.%20how%20do%20i%20move%3F\"><h3>I have an older copy: \"Taler SEO Connector\" (folder taler-seo-connector) or \"Taler Connector\" (folder taler-connector). How do I move?<\/h3><\/dt>\n<dd><p>All copies use the same settings and data. Install and activate OptiWebOpz SEO (it waits and shows a notice while the\nolder copy is active). Then deactivate the older copy first, and only then delete it: from the Plugins screen, or by removing\nits folder (wp-content\/plugins\/taler-seo-connector or wp-content\/plugins\/taler-connector) with FTP or your host's file manager.\nWhile OptiWebOpz SEO is active it keeps the shared settings and data during that delete and puts them back right\nafter, so your site key, settings, redirects and SEO data stay and Taler keeps working with the site. On a multisite network,\nnetwork-activate OptiWebOpz SEO before you delete the older copy, or remove the older folder by hand.<\/p><\/dd>\n<dt id=\"how%20do%20i%20uninstall%20it%3F\"><h3>How do I uninstall it?<\/h3><\/dt>\n<dd><p>Deactivate it: Optiwebopz SEO output and redirects stop at once and Taler can no longer reach the site. Delete it: its options\nand tables (snapshots, cache, redirects, 404 log, link index, import log) are removed, on every site of a multisite network.\nPosts and their SEO fields stay, because they are your content (the secondary keywords an import kept and the content scores\nare removed: only this plugin reads them).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.4.2 \u2014 2026-11-09<\/h4>\n\n<ul>\n<li>Clearer plugin name and description.<\/li>\n<\/ul>\n\n<h4>2.4.1 \u2014 2026-11-06<\/h4>\n\n<ul>\n<li>Security: every plugin screen reads its address parameters (page number, filter, tab, message) only from a link or form that carries the current user's security token; any other request shows the screen's default view.<\/li>\n<li>Security: the one-time site key is shown only to the administrator who generated it, right after generating it; a forged or repeated visit cannot show or use it up.<\/li>\n<li>Security: screens list a post's title, SEO values and suggestions only when the current user may read that post; private and draft posts of other users are left out, with a line saying how many rows were not shown.<\/li>\n<\/ul>\n\n<h4>2.4.0 \u2014 2026-11-03<\/h4>\n\n<ul>\n<li>Renamed Optiwebopz SEO Connector: the folder, main file and text domain are now optiwebopz-seo-connector. Settings, data, the SEO fields and the REST routes Taler uses are unchanged.<\/li>\n<li>An older copy (folder taler-seo-connector or taler-connector) can be deleted from the Plugins screen while Optiwebopz SEO Connector is active: the shared settings and data are kept aside during the delete and put back right after. Deactivate the older copy first, then delete it.<\/li>\n<li>While an older copy is active it keeps running and Optiwebopz SEO Connector waits, with a notice on the Plugins screen; Overview says when an older copy is still installed.<\/li>\n<\/ul>\n\n<h4>2.3.5 \u2014 2026-11-03<\/h4>\n\n<ul>\n<li>Every value a form or a request sends is cleaned where the plugin reads it, with the matching WordPress function. Redirect patterns and new addresses may contain letters, digits, spaces and the usual address and regular-expression symbols; a pattern or address with any other character (quotes, &lt; &gt; or a backtick, a line break or another control character) is not saved, and the screen says why. Existing redirects keep working.<\/li>\n<li>The 404 log stores an address with unusual characters in its encoded form (for example %3C instead of &lt;); the log screen shows it that way.<\/li>\n<li>Text fields (SEO titles, descriptions, alt text, term fields, settings) no longer keep invisible control characters.<\/li>\n<li>The message after saving on Settings \u2192 Taler SEO Connector can be dismissed, like the messages on the Taler SEO screens.<\/li>\n<\/ul>\n\n<h4>2.3.4 \u2014 2026-11-02<\/h4>\n\n<ul>\n<li>Optional link features in Settings \u2192 Taler SEO Connector, all off until you switch them on: send this site's performance numbers to Taler (whole numbers only, once a day and with \"Send now\"), ask Taler to read the site, and three separate ways to apply Taler's suggestions (an editor clicks Apply; Taler applies; automatic, only for SEO titles and meta descriptions, with a daily limit). One switch, \"Stop remote and automatic changes\", turns both of those off at once.<\/li>\n<li>New Taler SEO \u2192 Suggestions screen: what Taler suggests for a post's or page's SEO title, meta description, focus keyword, social title and social description, each with the reason; Apply, Dismiss, and a change log of who or what applied each change, when, the old and new value, with Undo. A copy of the post is kept before every change.<\/li>\n<li>Search performance on a site that is not linked to Taler says where the numbers come from: Google Search Console through Taler.<\/li>\n<li>Secondary buttons on every Taler SEO screen are easier to read in all WordPress admin colour schemes.<\/li>\n<\/ul>\n\n<h4>2.3.3 \u2014 2026-11-02<\/h4>\n\n<ul>\n<li>New Performance screen, first in the Taler SEO menu: content scores of your published posts (good, OK, needs work, posts with something to fix) and one row per day showing how they change, posts without an SEO title, description or focus keyword, posts not updated in 6 or 12 months, text length, the 404 log and redirects, internal links, images without alt text and sitemap addresses. Everything is measured on your site; nothing is sent anywhere.<\/li>\n<li>Each post gets a content score from 0 to 100 from the checks in the Taler SEO box. New checks: subheadings, sentence and paragraph length, structured data, and the focus keyword together with the other keywords (at most 2.5 uses per 100 words). Posts built by a page builder or shortcodes skip the text checks instead of failing them.<\/li>\n<li>Scores are made when you save a post and by \"Analyse all posts\" on Performance, one batch per click (in the background through Action Scheduler when another plugin provides it). A post that cannot be analysed is skipped and listed.<\/li>\n<li>New Recommendations screen: what to change, the biggest gain first, each with the reason and the posts concerned. Advice only.<\/li>\n<li>\"SEO score\" column and a score filter in the post lists.<\/li>\n<li>The Import history and the Overview \"Last import\" tile read an import record with a missing value without a PHP warning.<\/li>\n<\/ul>\n\n<h4>2.3.2 \u2014 2026-11-01<\/h4>\n\n<ul>\n<li>Import finds Yoast SEO data that exists only in Yoast's own index table (not in post meta), for posts and categories, and copies it through the same preview, log and undo. A post with both is counted and copied once.<\/li>\n<li>Import keeps every keyword: Rank Math's second to fifth focus keyword, All in One SEO's additional keyphrases and Yoast SEO Premium's related keyphrases are kept as the post's secondary keywords (Undo removes them). All in One SEO 5 keywords are read from its new columns.<\/li>\n<li>Import also brings the site-wide settings Taler has (author, search, 404 and product titles; archive noindex; sitemap contents; organization or local business with address, phone, hours and location; logo and sharing image; social profiles; X username), Yoast SEO per-post redirects and Rank Math's 404 log. Undo puts the settings back exactly.<\/li>\n<li>When no Yoast SEO, Rank Math or All in One SEO data is found, the Import screen says so plainly and that nothing is wrong.<\/li>\n<li>Import on large sites: every batch moves on even near the memory limit; a damaged stored value is shown as not usable instead of being skipped silently; an over-long value says it was shortened; a record that cannot be read is skipped and the screen says so in plain words (no technical detail). Previews no longer push older imports out of the history, so their Undo stays available.<\/li>\n<\/ul>\n\n<h4>2.3.1 \u2014 2026-11-01<\/h4>\n\n<ul>\n<li>Taler SEO \u2192 Setup has eight short steps: another SEO plugin (what can be imported, with a link to Import, which shows a preview first), your site (organization or local business, name, logo, sharing image, schema type), titles, modules, sitemap, switching Taler SEO on (still refused while Yoast SEO, Rank Math or All in One SEO is active), the optional Taler link, and a summary.<\/li>\n<li>Every step can be skipped, nothing changes until you save that step, and the setup continues where you left it. It never opens by itself; open it from Taler SEO \u2192 Setup or the \"Run setup\" card on Overview. \"Close setup\" hides the card's reminder; running it again keeps your settings.<\/li>\n<li>Setup is for administrators.<\/li>\n<\/ul>\n\n<h4>2.3.0 \u2014 2026-10-31<\/h4>\n\n<ul>\n<li>Taler SEO \u2192 Overview is a dashboard of this site: whether titles, meta tags, schema and sitemaps are on, post checks on the newest posts, redirects, addresses not found (404), sitemap addresses, schema, posts nobody links to, images without alt text and the last import. It shows only what the plugin already has on this site; nothing new is collected or sent.<\/li>\n<li>Overview has a \"Run setup\" card for the four-step setup (nothing redirects there) and a \"Taler (optional)\" card.<\/li>\n<li>Search performance without Taler, or before Taler has data, explains what the screen shows and that the search data comes from the optional Taler link, with a Connect button. It is no longer shown as a fault.<\/li>\n<li>\"Taler SEO is not switched on yet\" no longer appears on every Taler SEO screen; Overview says it once, in plain words. The \"not connected\" notice is gone: the plugin is complete without Taler.<\/li>\n<li>The Plugins screen's \"Settings\" link opens Taler SEO \u2192 Overview.<\/li>\n<li>Disconnecting from Taler also deletes the Taler numbers kept on the site, so none stays on screen.<\/li>\n<\/ul>\n\n<h4>2.2.3 \u2014 2026-10-31<\/h4>\n\n<ul>\n<li>Renamed Taler SEO Connector (folder, main file and text domain taler-seo-connector). Settings, data and the REST routes Taler uses are unchanged. When the older copy (folder taler-connector) is active too, this copy waits and the Plugins screen says so; deleting the older copy from wp-admin is refused while this copy runs, because it would remove the shared settings.<\/li>\n<li>Requires PHP 8.1.<\/li>\n<li>Settings \u2192 Taler SEO Connector: a Default author for Taler drafts. Taler's author is kept when that user exists and can edit posts; otherwise the draft gets the Default author (automatic: the user who set the site key, else the first administrator).<\/li>\n<li>The \"not connected\" notice shows only on the Taler SEO screens, only while the site does not use Taler SEO on its own, and each administrator can dismiss it.<\/li>\n<li>Privacy: a suggested privacy policy text; the 404 log keeps an address 90 days after it was last seen (setting on Taler SEO \u2192 Redirects &amp; 404, removed in the background) and keeps the linking page without its query string; a post's snapshots are deleted with the post.<\/li>\n<li>Multisite: deleting the plugin cleans every site of the network.<\/li>\n<li>FAQ pairs are stored under the post meta key _taler_faq_pairs; posts with the old key keep working and move to the new key when they are saved.<\/li>\n<li>REST routes: a list or object where text is expected, or a title or excerpt that is too long, is refused with a clear 400 instead of a PHP warning or a 500.<\/li>\n<li>The background-jobs route checks its signature in its permission callback (same checks and answers).<\/li>\n<li>readme: what Taler is, what runs by default, an FAQ, and exactly what each key allows.<\/li>\n<\/ul>\n\n<h4>2.2.2 \u2014 2026-10-31<\/h4>\n\n<ul>\n<li>Plugin header: Author is now Optiwebopz with its own address (https:\/\/optiwebopz.com\/), separate from the plugin page. No code change.<\/li>\n<\/ul>\n\n<h4>2.2.1 \u2014 2026-10-31<\/h4>\n\n<ul>\n<li>Code review clean-up before the wordpress.org submission. No change in what the plugin does.<\/li>\n<li>Every admin form handler checks its own nonce right after the capability check.<\/li>\n<li>Import screen lists and the breadcrumb function print through wp_kses().<\/li>\n<li>Database queries: one precise review note per query instead of file-wide notes; clearing the 404 log uses prepared placeholders.<\/li>\n<li>readme: the wordpress.org contributor is now optiwebopz.<\/li>\n<\/ul>\n\n<h4>2.2.0 \u2014 2026-10-31<\/h4>\n\n<ul>\n<li>Import from Yoast SEO, Rank Math and All in One SEO rebuilt: what each plugin holds, a preview that changes nothing (copy, conflict, needs review, not usable), an explicit confirm, an import log (old and new value) and Undo. Taler's own values are kept unless you choose to replace them. Batches of 100 with time and memory limits; one unreadable item is logged and skipped.<\/li>\n<li>Also imported: social image, breadcrumb title, article type, site-wide title patterns and separator. Variables with a Taler equivalent are converted; any other variable marks the value \"needs review\" instead of being dropped.<\/li>\n<li>All in One SEO: its post robots settings are used only when the post does not follow the default.<\/li>\n<li>New post fields: social image address and breadcrumb title.<\/li>\n<li>Shortcodes [taler_breadcrumbs] and [taler_html_sitemap].<\/li>\n<li>Roles: per-role permission to change noindex \/ nofollow, the canonical address and the article type.<\/li>\n<li>The Import screen is for administrators only.<\/li>\n<\/ul>\n\n<h4>2.1.2 \u2014 2026-10-31<\/h4>\n\n<ul>\n<li>Plugin directory readiness: an External services section in this readme, installation from the plugin directory, Author and License addresses, a shorter summary line.<\/li>\n<li>Code comments no longer carry internal project references; no change in behaviour.<\/li>\n<li>Fixes from the official Plugin Check.<\/li>\n<\/ul>\n\n<h4>2.1.1 \u2014 2026-10-30<\/h4>\n\n<ul>\n<li>Redirects: pattern rules \u2014 address contains \/ starts with \/ ends with \/ regular expression (a $1 in the new address takes the first group). A regular expression is refused when it is invalid or could make pages slow (back-references, repeated groups such as (a+)+, too much backtracking), and every one runs under low PCRE limits; at most 100 pattern rules are tried per request, exact addresses first.<\/li>\n<li>Importers: pattern redirects from Rank Math (contains \/ start \/ end \/ regex), Yoast SEO Premium (regex) and All in One SEO Pro (regex) are now imported with their match type instead of only counted.<\/li>\n<\/ul>\n\n<h4>2.1.0 \u2014 2026-10-30<\/h4>\n\n<ul>\n<li>Internal links: a link index, link counts in the post lists, posts nobody links to, and link ideas in the Taler SEO box.<\/li>\n<li>Background work: Action Scheduler when present, else a signed call or WP-CLI (never WP-Cron).<\/li>\n<li>Categories, tags and other taxonomies get SEO title \/ description \/ noindex fields; public custom post types join the sitemaps and the Taler SEO box.<\/li>\n<li>IndexNow (off by default). The plugin makes its own public IndexNow key and answers it at \/.txt; nothing is written to the site's files.<\/li>\n<li>Images (alt text suggestions, background fill), Bulk edit, a four-step Setup, and Roles (who may use Taler SEO, who sees the box).<\/li>\n<li>WooCommerce: product GTIN \/ MPN \/ brand in the schema; filtered or sorted shop pages are kept out of search results.<\/li>\n<li>Importers: redirects from Rank Math, Yoast SEO Premium and All in One SEO Pro; category \/ tag SEO from all three.<\/li>\n<li>Extension points for AI search visibility and extra Taler data (filters taler_cx_ai_visibility, taler_cx_pull_endpoints).<\/li>\n<\/ul>\n\n<h4>2.0.0 \u2014 2026-10-29<\/h4>\n\n<ul>\n<li>Taler SEO: titles and meta tags, schema graph, XML + image sitemaps, redirects + 404 log, post analysis box, search performance from Taler, importers from Yoast SEO \/ Rank Math \/ All in One SEO.<\/li>\n<li>Coexist-safe: Taler SEO output is off while another SEO plugin is active, and off until switched on.<\/li>\n<li>New signed pull to Taler (admin screens only, cached, rate-limited). Every 1.x route is unchanged.<\/li>\n<\/ul>\n\n<h4>1.2.0 \u2014 2026-10-16<\/h4>\n\n<ul>\n<li>SEO fields go to the active SEO plugin: Rank Math (as before), Yoast SEO or All in One SEO. With no SEO plugin, Taler posts get a meta description, Open Graph \/ Twitter tags and one BlogPosting schema.<\/li>\n<li>Taler posts get a table of contents at display time (only when the site has none of its own; Settings \u2192 Taler SEO Connector: automatic \/ always \/ never) and an optional \"By author\" line. The stored post content is never changed.<\/li>\n<li>No duplicate FAQ schema when the post already has an SEO plugin's FAQ block.<\/li>\n<li>New route POST \/site-settings (site key) used by Taler's site check; \/health reports the SEO environment. Every 1.1.0 route is unchanged.<\/li>\n<\/ul>\n\n<h4>1.1.0 \u2014 2026-10-14<\/h4>\n\n<ul>\n<li>New route POST \/media-upload (media key): uploads an image to the media library, sets its alt text and caption (attribution), and optionally sets it as the featured image of a Taler-created draft. Additive \u2014 every 1.0.0 route is unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.0 \u2014 2026-10-09<\/h4>\n\n<ul>\n<li>First version.<\/li>\n<\/ul>","raw_excerpt":"Complete SEO plugin: titles and meta, schema, XML sitemaps, redirects and 404 log, content scores, internal links, import from other SEO plugins.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/398269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=398269"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/optiwebopz"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=398269"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=398269"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=398269"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=398269"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=398269"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=398269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}