=== Linkmora ===
Contributors: ashkanzs, freemius
Tags: backlinks, links, seo, widget, shortcode
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 2.8.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Manage backlinks with scheduling, shortcode and widget display, and local click collection.

== Description ==

Linkmora helps you manage and display backlinks across your WordPress site. Add links from the admin area, then show them with the `[linkmora]` shortcode or Linkmora widget.

The Free plugin includes:

* Create, edit, delete, search, filter, and reorder backlinks.
* Set Follow or Nofollow, open links in a new tab, and control where links display.
* Schedule links with start and expiration dates, and review Active, Scheduled, and Expired statuses.
* Display links with a shortcode or widget and use Linkmora's default frontend styling.
* Import and export links with CSV files.
* Collect and retain click counts locally, including before Pro is installed.

= Free and Pro =

Free collects clicks and preserves historical counts. Linkmora Pro displays individual click counts, click totals, sorting by clicks, and most-clicked links. Pro also adds appearance customization, email expiration notifications, automatic deletion after expiration, and sponsored link controls. Free backlink management does not require a Pro purchase.

= Scheduling =

Start and end dates use the WordPress site timezone. A link starts at midnight on its start date and expires at midnight on its end date (the end date is exclusive). Both dates are required. Uncached rendering checks the dates directly, even if scheduled maintenance is late. WordPress cron synchronizes stored status and requests cache clearing; full-page caches require cron to run to refresh at date boundaries.

= Privacy =

Linkmora increments a local per-link click counter. It does not store raw visitor IP addresses in its click data. A site-salted hash of the connection IP address and link ID is used as a local 30-second cooldown key. The key expires after 30 seconds; physical removal depends on WordPress transient or object-cache cleanup. Forwarded IP headers are not trusted by the plugin. Visitors behind the same connection address may share a cooldown.

= Usage =

Add the `[linkmora]` shortcode to a post or page, or add the Linkmora widget to a widget area. Manage links and settings from the Linkmora menu in WordPress admin.

== External Services ==

Linkmora includes the Freemius WordPress SDK for optional account connections, Pro license management, and purchasing/account interfaces.

When you choose to connect, Freemius may receive account information (such as name and email), site identifiers and URL, plugin/version/activation state, and WordPress/PHP version information. Optional diagnostic and marketing collection follows the permissions you grant in the SDK. Connected-site synchronization and license operations communicate with Freemius as needed. Opening checkout or account interfaces also contacts Freemius; purchases may involve billing/payment information. Deactivation/uninstall reporting and voluntarily submitted feedback follow the SDK's connection state and consent controls. The SDK may also make operational requests such as connectivity checks; this description does not promise that all requests require analytics opt-in.

First-party Linkmora code handles visitor backlink click statistics locally and does not intentionally send those statistics to Freemius. The core Free backlink-management functionality does not require a Pro purchase.

* Service: https://freemius.com/
* Privacy policy: https://freemius.com/privacy/
* Terms of service: https://freemius.com/terms/

== Third-Party Source and Licenses ==

* Jalaali PHP 1.0.0 by Navid Emami (MIT), pinned source: https://github.com/jalaali/jalaali-php/tree/ab623ba3c556c2e2c7792972d5bfbc322b96df0f . Readable code and the MIT notice are included under vendor/jalaali/. Local namespace and PHP compatibility changes are documented in THIRD-PARTY-NOTICES.txt.

* persianDatepicker v0.1.0 by Mohammad hasan Behzadi (MIT; header last updated April 15, 2019). Readable source and the matching minified distribution: https://github.com/behzadi/persianDatepicker/tree/780ce097eeb3f4d834f45e88c5035c843e79e0d7/js . The MIT notice is included in licenses/persian-datepicker-MIT.txt. The upstream distribution is used without rebuilding it.
* Freemius WordPress SDK 2.13.5 (GPL-3.0-only, with original component notices retained). Source: https://github.com/Freemius/wordpress-sdk/tree/2.13.5 . SDK/component licenses are included under vendor/freemius/ and detailed in THIRD-PARTY-NOTICES.txt.

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/linkmora`, or install the plugin through the WordPress Plugins screen directly.
2. Activate the plugin through the "Plugins" screen in WordPress.
3. Go to Linkmora > Add Link to create your first link.
4. Go to Linkmora > Settings to configure backlink management behavior.

== Frequently Asked Questions ==

= Does this work with WP Rocket? =

Yes. Linkmora requests cache clearing after successful additions, edits, deletions, ordering changes, relevant settings changes, and scheduled status synchronization. On sites using full-page caching, ensure WordPress cron runs regularly (or configure a server cron) so date-boundary changes reach cached pages promptly.

= Can I stop backlinks from opening in a new tab? =

Yes. Go to Linkmora > Settings and turn off "Open Links in New Tab." When links do open in a new tab, Linkmora adds safe rel attributes such as `noopener noreferrer`.

== Changelog ==

Older release notes are available in `changelog.txt`.

= 2.8.0 =
* New: optional Freemius account and Pro license integration.
* Fixed: Free/Pro activation handoff and anonymous click cooldown handling.
* Fixed: scheduled visibility, status filters, and cache clearing after link changes.
* Fixed: CSV spreadsheet safety and compatibility with newer PHP versions.
* Preserved: Free click collection, historical counts, and existing settings.
* Updated: external-service and third-party documentation.

= 2.7.0 =
* Improved: Pro feature availability checks while preserving stored data.

== Upgrade Notice ==

= 2.8.0 =
Improves scheduling, click counting, CSV safety, and Free/Pro compatibility. Existing links, settings, and click counts are retained.

= 2.7.0 =
Improves Pro feature availability checks without changing stored link data.

= 2.6.2 =
Run the standalone migration tool in the source repository before removing the old plugin. It copies saved settings into Linkmora's current options and leaves the old values intact.

= 2.4.4 =
Fixes adding and editing links when the admin calendar is Persian.

= 2.4.3 =
Shortcode output and uninstall behavior are safer; no action needed.

= 2.4.0 =
No action needed; new stats/search/import-export features appear automatically on the Links page.
