=== E-CORP ALL IN ONE ===
Contributors: ecorpagency
Tags: internal links, cache, seo, performance, interlinking
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Internal linking, a page cache and SEO in a single plugin. Each module is enabled separately. French interface.

== Description ==

E-CORP ALL IN ONE brings together three site maintenance tools that usually
require three separate plugins. Each module is enabled from the welcome screen,
and an unchecked module loads no code at all.

Internal linking and the cache work at render time, and disabling either one
returns the site to its previous state. The SEO module is the exception: it
stores three values per post and prints them in the page head, so a site that
disables it loses those from its pages. What was typed is kept in the database
and comes back when the module is enabled again.

**The admin interface of this plugin is in French.**

= Internal linking =

You define a list of rules mapping a keyword to a URL. On display, each keyword
becomes a link to its target. The content stored in the database is never
modified.

* A keyword is linked on its first occurrence only.
* A cap limits how many links are inserted per post.
* A post never links to itself.
* Links can open in a new tab, or carry a `rel="nofollow"`.
* Only the post types you enable are processed.

No link is ever inserted inside an existing anchor, a heading, a script, a
style block, a code block, a form control, an iframe, an SVG, an HTML comment,
or any HTML attribute.

= Cache =

Rendered pages are served as-is to logged-out visitors. Publishing or editing a
post clears the cache.

* A logged-in visitor always gets the real page.
* Search, account, cart and checkout pages are never cached.
* The screen shows the number of entries, their weight and the age of the oldest one.
* Four optional loading tweaks, all disabled by default.
* A cleanup of post revisions and expired transients, on manual action only.

The module writes no file outside its own uploads directory, and never touches
`wp-config.php`.

= SEO =

The writer fills in three values on any post they may edit: an SEO title, a
description, and a checkbox that keeps the page out of search engines. The
module prints those in the page head, and nothing else. A page kept out of the
index also leaves the sitemap WordPress produces.

What the module does not do is part of the design: no structured data, no Open
Graph or Twitter cards, no breadcrumbs, no redirects, and no sitemap of its
own. That is where SEO plugins become heavy, and none of it is needed to write
a page well.

It also reads the rendered post and lists what it lacks, sorted into three
severities. Each post carries a state in one of three values, never a number,
and a check that does not apply to a page is set aside there, on that page
only.

Fourteen checks: missing title or title outside the bounds, missing
description, missing or duplicated first level heading, skipped heading level,
content below the word count, images without alternative text, images above the
weight, no incoming internal link, a site-wide noindex, content missing from the
sitemap, and four on the optional target keyphrase.

Settings pages are gone from this module: the four thresholds are fixed in the
code, and a documented filter moves them on the rare site that needs it.

== Installation ==

1. Install and activate the plugin.
2. The welcome screen opens. Check the modules you want.
3. Each active module adds its submenu under E-CORP AIO.

== Frequently Asked Questions ==

= Do I have to enable all three modules? =

No. Each module is enabled separately, and an unchecked module loads no code.
You can run just one.

= Does internal linking modify my posts? =

No. Everything happens at render time. Disabling the module removes every
generated link, leaving no trace in the database.

= Is the cache compatible with another caching plugin? =

Keep only one. This module drops no `advanced-cache.php` and does not touch
`wp-config.php`, so it will not clash on load, but two stacked caches make any
diagnosis impossible.

= Does the SEO module replace Yoast or Rank Math? =

It covers the part of their work that a writer needs day to day, and stops
there. If Yoast, Rank Math, SEOPress or All in One SEO is installed, the module
detects it, prints nothing at all, and says so on its screen: two plugins
writing the same title would fight over the same filter. It keeps auditing, and
reads the values held by the plugin in place.

= Can the database cleanup run on its own? =

No. Nothing is scheduled. The count is shown, you confirm, and nothing happens
without that.

= What happens to the ECORP Internal Links plugin? =

It is no longer maintained. Its linking engine is carried over here unchanged,
and your rules are imported automatically on first load.

= Is the plugin available in English? =

The interface is in French. The code is fully internationalized, so an English
translation can be added without any code change.

== Screenshots ==

1. The welcome screen, where each module is enabled.
2. Internal linking rules.
3. The SEO panel of a post.
4. Cache status and loading options.

== Changelog ==

= 1.1.0 =
* The SEO module now writes an SEO title, a description and a per-post noindex, and prints them in the page head.
* A panel in the block editor carries the fields, the target keyphrase, the state and the checks, and reacts as you type.
* A search result preview, and a button that drafts a description from the opening sentences.
* Each post carries a state in one of three values; a check that does not apply is set aside on that page.
* Four checks on an optional target keyphrase. No density, no percentage, no occurrence count.
* The module steps aside when Yoast, Rank Math, SEOPress or All in One SEO is installed.
* The four thresholds left the settings screen and are fixed in the code, behind a filter.
* The module screen lists every post with its state, so you know where to start.
* One click takes over the titles, descriptions, noindex and keyphrases already stored by Yoast or Rank Math, without overwriting anything you wrote here.

= 1.0.1 =
* The plugin homepage now points to this directory listing.

= 1.0.0 =
* First release.
* Internal linking module, carried over from ECORP Internal Links along with its rules.
* Cache module: page serving, purging, loading tweaks, database cleanup.
* SEO audit module: ten checks, read only.

== Upgrade Notice ==

= 1.1.0 =
The SEO module now writes three values per post and prints them in the page head. It steps aside when another SEO plugin is installed.

= 1.0.1 =
Link fix only. No functional change.

= 1.0.0 =
First release. Settings from ECORP Internal Links are imported automatically.
