تفصیل
HATATATE puts one call-to-action (CTA) on all of your posts without editing each post. A CTA can be a banner, an ad tag or a text link.
What it does
- Create a banner. Register a CTA (HTML, image or text) in the CTA library. Ad code from an affiliate network is kept as you pasted it, as long as the CTA’s author (its
post_author) may post unfiltered HTML (the same rule WordPress applies to post content). - Choose where it appears. Pick a position: before or after the content, after a heading, before the table of contents, in the sidebar, as a modal, or as a fixed bar at the bottom of the screen. You can also click an element on one of your posts to add a custom position.
- It shows on every post. Save the placement once and the CTA appears on all published posts. Change the position later and every post follows.
- Decide it per post. Turn the CTA on or off for a specific post, page, category or tag from the “Per page” tab. Categories and tags are listed inside the plugin, so you do not leave the screen.
- A/B test. Compare two CTAs in the same position. The report uses a Bayesian estimate so you can stop the test when one is clearly better.
- Report. Impressions (50% visible for 1 second) and clicks are counted on your own site and shown per CTA, per position and per day. Your own visits are left out while you are logged in with an account that can write posts.
- Ask an AI assistant. With WordPress 6.9 or later and the MCP Adapter plugin, an AI assistant such as Claude Code can read your results and settings and create a CTA as a draft. See “Using HATATATE from an AI assistant (MCP)” below.
First run
- Open “HATATATE” in the admin menu. The Home tab lists what to do next.
- Create one CTA in the CTA library.
- Open the placement, choose a position, switch it on, and open one of your posts to confirm.
How the plugin is shaped
- You configure one placement: a list of positions, each with the CTA that goes there. The same placement is used on the whole site. Per-post, per-category and per-tag settings only turn it on or off.
- You can create as many A/B tests as you like. One position runs one test at a time; a second test in the same position waits until you pause or finish the first.
For tag managers and analytics
Every CTA is wrapped in an element with id="hatatate-cta-<ID>" and data-hatatate-cta="<ID>" (the CTA’s post ID). If the same CTA appears twice on one page, the second element gets -2 appended to its id while the data attribute stays the same. Use the data attribute when you set up click triggers in Google Tag Manager.
Requirements and what it does not do
- WordPress 6.0 or later, PHP 7.4 or later.
- The content positions rely on the
the_contentfilter. Themes or page builders that render posts without it will not show in-content CTAs (sidebar, modal and fixed bar still work). - Positions that depend on a table of contents work with plugins and themes that output a
p-toc,toc_containerorez-toc-containerelement. - The admin screens are in Japanese.
- A CTA is printed as it was saved only when its author (its
post_author) has theunfiltered_htmlcapability, which is the rule WordPress core uses for post content and for the Custom HTML widget. For everyone else the markup goes throughwp_kses()with an explicit list of allowed tags, and<script>is dropped. Nobody has the capability whenDISALLOW_UNFILTERED_HTMLis defined, and on multisite only network administrators have it.
HATATATE Pro, a separate paid add-on, lets you use a different placement pattern for each post, category or tag: https://border-haze.co.jp/tools/hatatate-pro/
Using HATATATE from an AI assistant (MCP)
From version 1.2.0, an AI assistant such as Claude Code can read your CTA results and settings and create a CTA as a draft, through MCP (Model Context Protocol). You can then talk with the assistant about which CTA works and ask it to write a new one.
What you need to install separately
- WordPress 6.9 or later. On WordPress 6.8 and earlier this part of the plugin does nothing.
- The MCP Adapter plugin. HATATATE does not require it; without it, nothing changes.
- An application password for an administrator account (Users > Profile > Application Passwords). Application Passwords need your site to use HTTPS. We recommend creating a separate application password only for the AI assistant and revoking it when you stop using it.
- An MCP client, such as Claude Code, set up with your site’s MCP address, the user name and the application password.
Where to connect
https://your-site.example/wp-json/hatatate/mcp– HATATATE’s own MCP server. Each tool below is listed one by one.https://your-site.example/wp-json/mcp/mcp-adapter-default-server– the default server of the MCP Adapter plugin, which shows the same tools through its own discovery tools.
What the HATATATE MCP tools do
hatatate/get-stats– read impressions, clicks and click-through rate per day, per position, per CTA or per page (site-wide totals, up to 180 days).hatatate/get-placement– read the placement: which CTA appears in which position, whether delivery is on, and whether the CTA is shown on posts without a setting.hatatate/get-page-rules– read the per-page settings: the site-wide switch, per-post, per-category and per-tag settings, and your custom positions.hatatate/list-ctas– list the CTAs in the CTA library with their status and totals.hatatate/get-cta– read one CTA, including its HTML.hatatate/list-ab-tests– list the A/B tests, their state, whether each one is shown on your posts and why not, and the results.hatatate/create-cta– create a new CTA as a draft.hatatate/update-cta– edit a CTA that is still a draft. A published CTA is refused.
Every HATATATE MCP tool requires the manage_options capability, the same as the plugin’s admin screens. The HATATATE MCP tools cannot publish or delete a CTA, change the placement or the per-page settings, or create, start, pause or end an A/B test: no tool for those actions is registered. Note that this is how WordPress application passwords work in general, not something specific to HATATATE: an application password can use the whole WordPress REST API with the same permissions as its account. With an administrator’s application password, that includes publishing or deleting posts, pages and CTAs (CTAs use the REST route /wp-json/wp/v2/hatatate_item, which the block editor needs). To keep this in check, create a separate application password only for the AI assistant and revoke it when you stop using it.
Check a CTA that the AI assistant created or edited before you publish it. A CTA created or edited through the HATATATE MCP tools is a draft and is not shown to visitors. Open it in the CTA library and read its HTML before you publish it. A CTA created through these tools has the account you connected with as its author. When the CTA’s author may post unfiltered HTML (on a single site, administrators and editors may; on multisite, only network administrators may; nobody may when DISALLOW_UNFILTERED_HTML is defined), the HTML is printed as written once the CTA is published, including any <script>.
External services
This plugin does not send data about your site or its visitors to any external service. Impressions and clicks are stored in your own database and sent to your own site’s REST API (hatatate/v1/track).
The plugin fetches images from third-party hosts (for example an affiliate network’s image server) only to render a preview snapshot of a CTA’s own content, and only for the image URLs written in that CTA’s own HTML. This can happen in three places, all of them administrator-only:
- When an administrator edits a CTA in the block editor, a snapshot of it is captured automatically.
- On the CTA screen, a CTA whose snapshot is out of date is re-captured automatically when the screen is opened.
- When an administrator starts an A/B test, a snapshot of each side is captured.
Nothing about your site is sent in these requests beyond the image URL being fetched, and requests to private or reserved IP addresses are refused.
The MCP tools described above do not send anything from your site either. When you connect an AI assistant, the assistant requests the data from your site’s REST API with your application password, and what it does with that data is decided by the assistant and the service you chose.
Third-party libraries
These libraries are bundled unmodified in admin/lib/ and are all under a GPL-compatible license. The full license text of each one is in admin/lib/LICENSES/, together with the bundled version and where the file was obtained.
- Chart.js 4.5.1 – MIT (
admin/lib/LICENSES/chart.js-MIT.txt). The file header reads “Released under the MIT License”. - Lucide 1.47.0 – ISC (
admin/lib/LICENSES/lucide-ISC.txt). The file header reads “@license lucide v1.47.0 – ISC”. The 15 individual SVG icon files inadmin/icons/(all exceptsymbol-menu.svgandsymbol-mono.svg, which are this plugin’s own logo) are single icons extracted unmodified from the same Lucide release; the same license file covers them. - html2canvas 1.4.1 – MIT (
admin/lib/LICENSES/html2canvas-MIT.txt). The file header reads “Released under MIT License”. It bundles tslib, which is licensed under 0BSD by Microsoft. tailwind.cssis not a third-party file as shipped: it is a stylesheet this plugin compiles with Tailwind CSS 3.4.17 (MIT,admin/lib/LICENSES/tailwindcss-MIT.txt). See “Source code” below for how to rebuild it.
Source code
admin/lib/tailwind.css is minified, so the files it is built from are included in the plugin: `admin/lib/src/tailwind-source.css` (the input) and `admin/lib/src/tailwind.config.js` (the build configuration, which also carries the exact command). Running that command with Tailwind CSS 3.4.17 from the plugin root reproduces the shipped file byte for byte. Every other file in the plugin is shipped in its readable form.
سکرین شاٹاں






انسٹال کرݨ
- Install it from the plugin directory, or upload the ZIP through Plugins > Add New > Upload Plugin.
- Activate it. Two tables are created for the counters.
- Open “HATATATE” in the admin menu and follow the Home tab.
ہرہک دے سوال
-
What data does this plugin store?
-
Everything stays in your own WordPress database. The plugin stores impressions, clicks, the page URL and the page title of the post where a CTA was shown, together with the CTA, the placement and the date. No personal data is stored: the visitor’s IP address and user agent are turned into a one-way hash that is kept in a transient for a few seconds only, so that a reload or a double click is not counted twice, and the hash is discarded after that. Nothing is ever sent to us or to any other service.
If you connect an AI assistant through MCP, the assistant reads the data it asks for, using the application password you gave it. See “Using HATATATE from an AI assistant (MCP)” above.
-
Does it slow down my site?
-
No external request is made when a post is displayed. Two small scripts (about 4 KB for showing the CTA and about 10 KB for counting) are loaded with
defer, and counts are sent to your own site’s REST API. -
Does uninstalling remove my data?
-
No. CTAs, the placement, A/B tests and counters stay in the database so that you can reinstall without losing them. Delete them from the admin screen first if you want them gone.
-
The CTA does not appear in the content
-
Check that the placement is switched on (the switch at the top of the Placement tab) and that the theme outputs posts through
the_content. Then open the placement and use “Check this position” to see how many posts match. -
Can I show the CTA on only one post?
-
Yes. On the Placement tab, turn off “Show on posts without a setting”. Then on the Per page tab, turn the setting on for the post you want and choose “show”.
-
My ad code does not appear
-
Ad code that draws itself with JavaScript is kept only when the CTA’s author (its
post_author) may post unfiltered HTML. Administrators and editors may do so on a single site; on multisite only network administrators may, and nobody may whenDISALLOW_UNFILTERED_HTMLis defined inwp-config.php. In every other case<script>is removed before the CTA is printed. The CTA library marks the affected CTAs, so you can see which ones lose their code.
ریویو
There are no reviews for this plugin.
Contributors & Developers
“HATATATE” is open source software. The following people have contributed to this plugin.
حصہ پاوݨ آلے“HATATATE” دا آپݨی زبان وچ ترجمہ کرو۔
ڈیویلپمنٹ وچ دلچسپی ہے؟
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
تبدیلی لاگ
1.2.0
- New: an AI assistant such as Claude Code can read your CTA results and settings through MCP (Model Context Protocol) and create a CTA as a draft. This needs WordPress 6.9 or later and the MCP Adapter plugin, which you install separately. See “Using HATATATE from an AI assistant (MCP)”.
- The HATATATE MCP tools read the results (per day, per position, per CTA or per page), the placement, the per-page settings, the CTA library and the A/B tests. They can create a draft CTA and edit a CTA that is still a draft. They cannot publish or delete a CTA, change the placement or the per-page settings, or create, start, pause or end an A/B test. As with any WordPress application password, the password itself can still use the whole REST API with the same permissions as its account, including publishing or deleting posts, pages and CTAs. Use a separate application password for the AI assistant and revoke it when you stop using it.
- Check a CTA that the AI assistant created or edited in the CTA library before you publish it. When the CTA’s author may post unfiltered HTML, its HTML is printed as written, including any script.
- Nothing changes on WordPress 6.8 and earlier, or when the MCP Adapter plugin is not active.
1.1.4
- A/B tests: version A is now the CTA that is currently shown at the position you choose. You only pick version B, the CTA that challenges it. If two or more CTAs are shown there, you choose which one to challenge. The position list shows only positions that have a CTA. If the placement has no CTA at all, the “New” button cannot be pressed and says to place a CTA first.
- A/B tests: the create screen has two buttons, “Start the test” and “Save without starting”. If another test is already running at the same position, “Start the test” cannot be pressed and the reason is shown under the position field.
- A/B tests: a test that was created but never started is now labeled “Not started”, separately from a test that was started and then paused.
- A/B tests: the Home screen and the A/B test tab now tell you when no A/B test is shown on your pages (for example, all tests are not started, paused, waiting for their start date, or finished). A test counts as shown only when its placement is also delivering. If a running test is not shown, or a paused test would not be shown even if you start it, the message says so and each card gives the reason.
- A/B tests: when the placement that a test uses is switched off (the switch at the top of the Placement tab), the test’s card says the test is not shown and how to switch it back on. The “Running” label stays, because you did not stop the test yourself.
- A/B tests: when a test uses a placement that this plugin does not show on posts (for example, one created with another plugin that is no longer active, or one that was moved to the trash or deleted), its card says the test is not shown and that you can end it and create a new one. Its results are kept. On a site where another plugin chooses the placement for each post, a test that uses one of those placements is counted as shown.
- A/B tests: when you remove, replace or move the CTA that a running test uses on the placement screen, a confirmation appears before saving. If you save, that test is paused, and its card explains what happened and how to resume.
- A/B tests: once a test has been shown to visitors, its position, version A, version B and start date can no longer be edited, so results from different CTAs are not mixed. The name, target posts and end date can still be changed.
- A/B tests: the target post search now lists only posts where the test can appear. If a post selected earlier no longer shows the test, the card tells you and the post is marked in the edit screen.
- A/B tests: duplicating a test now keeps its placement pattern.
- Fix: a running test that was set to appear in every placement pattern could appear on posts that show no CTA because “Show on posts without a setting” is turned off on the Placement tab. It now appears only on posts where a placement is applied.
- Per-post settings: the post list now shows only published posts. Drafts, private posts and scheduled posts are no longer listed.
- Tests created in earlier versions keep working as before until they end. In those tests, version A may be a CTA that is not on the page; they keep replacing the CTA they replaced in 1.1.3.
1.1.3
- Fix: when two or more CTAs were placed at the same position, finishing an A/B test with the winning CTA changed all of them to the winner, so the winner appeared twice. Now only the CTA that the test replaced is changed.
- Fix: when the winning CTA could not be put back into the placement (for example, the placement was deleted or the winning CTA is not published), the test still showed “winner” although nothing on the site had changed. Now the test keeps running, nothing is saved, and the admin screen explains why and what to do.
- An A/B test now replaces only one CTA at its position: the one that matches version A (or version B, or else the first one there). Other CTAs at the same position stay on the page during the test, in the order you arranged them. Before this version, they were hidden while the test was running. The placement screen, the page during the test and the page after the test now look the same.
- If you placed two or more CTAs at the same position and an A/B test is running there, we recommend starting that test again after updating. From this version the other CTAs appear next to the test, so the numbers before and after the update are not directly comparable.
1.1.2
- Fix: on a modal or a fixed button, the Wrapper ID was set on the outer box that also holds the close button (×). A tag manager that reads the nearest ID above the clicked element counted a click on × as a click on the CTA, and counted clicks on the CTA itself under the automatic ID instead of the Wrapper ID. The Wrapper ID is now set on the element that wraps the CTA, in every position, and the close button is outside that element.
- If you use a Wrapper ID in Google Tag Manager or a similar tool, check your triggers after updating: clicks and views of the CTA are now recorded under the Wrapper ID, clicks on × are no longer recorded under it, and on a CTA that has a Wrapper ID the automatic ID (hatatate-cta-) has moved from the id attribute to the data-hatatate-instance attribute.
- When the same Wrapper ID is used twice on one page, the second one gets “-2” (then “-3”), so the IDs on the page stay unique. The two CTAs of an A/B test share one Wrapper ID, because only one of them stays on the page.
1.1.1
- Fix: when two or more CTAs were placed at the same position inside the post (before the content, after the content, or a custom position), only the first one was shown. All of them are now shown, in the order you arrange them in the placement pattern. The preview on the placement screen shows the same order.
- When two or more modals appear in the same corner, or two or more fixed buttons appear at the bottom of the screen, the one placed higher in the placement pattern is now shown in front.
1.1.0
- The Home tab has a short news box at the bottom with tips and news. Its text ships with the plugin; nothing is loaded from outside.
- Fix: a modal set to fade in at the center of the screen went back to sliding in from the right after saving. The display style you choose is now kept.
1.0.0
- Initial release.
