=== Tag Display ===  
Contributors: s7ntech    
Tags: tags, display, shortcode, customization, tag cloud  
Requires at least: 5.0  
Tested up to: 6.8 
Requires PHP: 7.2  
Stable tag: 1.5.0
License: GPLv2 or later  
License URI: https://www.gnu.org/licenses/gpl-2.0.html  

Tag Display is a flexible WordPress plugin to showcase tags with clean, modern styles and customization.

== Description ==  

Tag Display allows you to present your WordPress tags using different templates, improving user engagement and navigation.
Choose between five customizable templates:

1. **Default Template:** Clean and modern tag buttons with subtle hover effects.
2. **Minimal Template:** Simple text links separated by commas for a clean look.
3. **Tag Cloud Template:** Tags displayed in a cloud format with sizes proportional to post count.
4. **Outlined Template:** Transparent background with a colored border — modern pill-style buttons.
5. **Hashtag Template:** Social-style tags prefixed with `#` — Instagram/Twitter look.

**Features:**
- Five tag templates for flexible styling.
- Native Gutenberg block for the block editor (no shortcode needed).
- Easy shortcode integration: `[s7n_tag_display]` or `[s7n_tag_display template="minimal"]`.
- Admin settings page with live template preview and color picker.
- Automatic or manual tag display (before or after content).
- Tag ordering: alphabetical, by post count, or random.
- Limit the number of tags shown and exclude specific tags by slug.
- Optionally display the post count next to each tag (e.g. *WordPress (12)*).
- Support for custom taxonomies alongside WordPress tags.
- SEO options: rel="nofollow" and target="_blank" for tag links.
- Theme template override: place a custom template file in your theme folder to fully control the output.
- Optimized for performance and easy to configure.

== Installation ==

1. Upload the `tag-display` folder to the `/wp-content/plugins/` directory.
2. Activate the plugin through the 'Plugins' menu in WordPress.
3. Go to **Settings → Tag Display** to configure templates, colors, tag ordering, and auto-display options.
4. Display tags in one of three ways:
   * **Shortcode** — add `[s7n_tag_display]` to any post or page.
   * **Gutenberg block** — search for "Tag Display" in the block inserter.
   * **Automatic** — enable auto-display in **Settings → Content Types** to add tags to every post automatically.

== Frequently Asked Questions ==

= How do I use the plugin? =
Activate the plugin, go to **Settings → Tag Display** to configure your preferences, then add tags to your posts in one of three ways:

1. **Shortcode** — paste `[s7n_tag_display]` anywhere in a post or page.
2. **Gutenberg block** — search for "Tag Display" in the block inserter and add it to your content.
3. **Automatic** — enable auto-display in Settings → Content Types and tags will appear automatically in every post.

= Can I change the template style? =
Yes. Choose between Default, Minimal, Cloud, Outlined, and Hashtag templates:

* From the settings page: **Settings → Tag Display → General Settings → Default Template**.
* Via shortcode: `[s7n_tag_display template="outlined"]`
* Via Gutenberg block: select the block and use the **Template** option in the sidebar.

= How do I use the Gutenberg block? =
In the block editor, click the **+** button and search for "Tag Display". Add the block to your post. Use the sidebar panel (**Display Settings**, **Link Options**, **Title**) to override the template, ordering, tag limit, and other options for that specific block — independently of the global settings.

= What shortcode attributes are available? =
All attributes are optional and override the global settings for that specific instance:

`[s7n_tag_display template="hashtag" order="count_desc" max="8" exclude="news,draft" nofollow="true" new_tab="true" show_count="true" title="Related topics:"]`

* `template` — `default`, `minimal`, `cloud`, `outlined`, `hashtag`
* `order` — `alpha_asc`, `alpha_desc`, `count_desc`, `count_asc`, `random` (default: global setting)
* `max` — maximum number of tags to show, e.g. `max="5"` (0 = all)
* `exclude` — comma-separated slugs to hide, e.g. `exclude="news,uncategorized"`
* `nofollow` — `true` to add `rel="nofollow"` to tag links
* `new_tab` — `true` to open links in a new tab
* `show_count` — `true` to show the post count next to each tag, e.g. *WordPress (12)*
* `title` — custom label above the tags, e.g. `title="Topics:"` (empty string hides the title)

= How do I limit or sort the tags? =
Go to **Settings → Tag Display → General Settings**. You can set:

* **Tag Order** — alphabetical (A→Z / Z→A), by post count (most/least used), or random.
* **Max Tags** — show only the first N tags (0 = show all).
* **Exclude Tags** — comma-separated slugs of tags to always hide.

These settings can also be overridden per-instance via shortcode or Gutenberg block.

= How do I hide specific tags? =
In **Settings → Tag Display → General Settings → Exclude Tags**, enter the slugs (not names) of the tags you want to hide, separated by commas. Example: `news, uncategorized, draft`.

To find a tag's slug, go to **Posts → Tags** in the WordPress admin.

= Can I display tags automatically without a shortcode? =
Yes. Go to **Settings → Tag Display → Content Types**, enable auto-display for posts, pages, or custom post types, and choose whether tags appear **before** or **after** the content.

= How do I add rel="nofollow" or open links in a new tab? =
Go to **Settings → Tag Display → General Settings** and enable the **rel="nofollow"** or **Open in new tab** checkboxes. These can also be set per-instance via shortcode (`nofollow="true"`, `new_tab="true"`) or Gutenberg block sidebar.

= Can I create a fully custom template from my theme? =
Yes. Place a file named `tag-display-template-{name}.php` in your theme (or child theme) root folder, where `{name}` is the template you want to override: `default`, `minimal`, `cloud`, `outlined`, or `hashtag`.

Example: to override the default template, create `wp-content/themes/your-theme/tag-display-template-default.php`.

The plugin detects and uses it automatically. A fully commented example file is included in the plugin's `examples/` folder.

The following variables are available in your custom template:

* `$tags` — array of WP_Term objects (`->name`, `->slug`, `->count`)
* `$display_title` — label text above the tags
* `$display_nofollow` — boolean, whether to add `rel="nofollow"`
* `$display_new_tab` — boolean, whether to open links in a new tab
* `$display_show_count` — boolean, whether to show post count next to each tag

= Is it compatible with the latest WordPress version? =
Yes, Tag Display is regularly updated to ensure compatibility.

== Screenshots ==  

1. General Settings
2. Content Types 
3. Appearance
4. Template Preview
5. Help

== Changelog ==

= 1.5.0 =
* Added theme template override: place `tag-display-template-{name}.php` in your theme folder to fully customize the output.
* Added `examples/tag-display-template-custom.php` with a fully commented template starter.
* Override is applied automatically for both shortcode and Gutenberg block rendering.

= 1.4.0 =
* Added native Gutenberg block (dynamic block, server-side rendered) with InspectorControls for all display options.
* Added Outlined template: transparent background with colored border pill-style buttons.
* Added Hashtag template: social-style tags prefixed with # (Instagram/Twitter look).
* Admin: improved admin preview cards for Outlined and Hashtag templates with live color updates.
* Admin: template select now switches to Template Preview tab and highlights the matching card in real-time.

= 1.3.0 =
* Added tag ordering options: alphabetical (A→Z / Z→A), by post count (most/least used), and random.
* Added maximum tags limit: show only the first N tags (admin setting + shortcode attribute).
* Added tag exclusion: comma-separated list of slugs to exclude from display.
* Added auto-display position: choose to insert tags before or after the post content.
* Added rel="nofollow" option for tag links (SEO).
* Added target="_blank" option to open tag links in a new tab.
* Added post count display option: show number of posts next to each tag (e.g. WordPress (12)).
* Extended shortcode with new attributes: order, max, exclude, nofollow, new_tab, show_count, title.
* Admin: added Reset to Defaults button for color settings.
* Admin: active tab is now remembered across page loads (localStorage).
* Admin: added unsaved-changes sticky notice when form fields are modified.
* Admin: changing the Default Template now switches to the Template Preview tab and highlights the matching card.

= 1.2.1 =
* Fixed tag cloud template: font sizes now scale proportionally to actual tag post counts instead of random values.
* Fixed accessibility: added :focus-visible outlines to all template links for keyboard navigation.
* Fixed accessibility: tag title changed from non-semantic div to p element with ARIA heading role.
* Added :active state on Default and Cloud template links.
* Added :visited state on Default and Minimal template links.
* Added prefers-reduced-motion support to disable CSS transitions for users who prefer it.
* Added reset for box-shadow, border-bottom and background-image that themes may add to links.
* Added tablet responsive breakpoint at 768px.
* Fixed admin preview links using href="#" (prevented scroll jump on click).
* Fixed admin color picker: hover style now updates a single persistent style tag instead of creating new ones on every change.

= 1.2.0 =  
* Added support for custom taxonomies.  
* Terms from selected custom taxonomies are now displayed alongside WordPress tags.  
* Updated templates to use get_term_link() for better compatibility with custom taxonomies.  
* Added new admin setting to select which custom taxonomies to include.  

= 1.0.0 =  
* Initial release.  
* Added three customizable templates.  
* Integrated shortcode support.  
* Created admin settings page.  

== License ==  

This plugin is licensed under the GPLv2 or later.  
