=== NutsForPress Indexing and SEO ===

Contributors: christian-gatti
Tags: NutsForPress, SEO, Open Graph, sitemap, llms
Donate link: https://www.paypal.com/paypalme/ChristianGatti
Requires at least: 5.3
Tested up to: 7.1
Requires PHP: 7.0.0
Stable tag: 2.8.2
License: GPL-2.0+
License URI: http://www.gnu.org/licenses/gpl-2.0.txt

NutsForPress Indexing and SEO is a simple, lightweight plugin that improves site indexing and helps with search engine optimization.


== Description ==

*Indexing and SEO* is one of several NutsForPress plugins that provide essential features not included in WordPress or available only in part.

*Indexing and SEO* allows you to:

* define custom SEO titles and descriptions for public post types and manage them through the WordPress editor or REST API
* enhance content sharing on social networks: featured images, titles, and descriptions are automatically included through Facebook Open Graph and Twitter Card tags
* set a backup image for posts and pages without a featured image
* replace the default WordPress sitemap with a more complete, customizable version that is automatically generated and fully compatible with WPML
* automatically generate an `llms.txt` file to improve communication with Large Language Models (LLMs) and extend the visibility of your content beyond traditional search engines
* apply "noindex" to content that you do not want search engines to index
* automatically fill the description, caption, and alternative text fields for uploaded media files
* bulk rebuild the description, caption, and alternative text fields for media files
* add Analytics and other custom scripts to the head, body, or footer and prevent them from loading while a logged-in administrator browses the website

Indexing and SEO is fully compatible with WPML; plugin option values do not need to be translated.

Take a look at the other [NutsForPress plugins](https://wordpress.org/plugins/search/nutsforpress/).

**Whatever is worth doing at all is worth doing well**


== Installation ==

= Installation from the Plugin Directory =

* In the WordPress administration area, go to *Plugins > Add New Plugin*
* Search for "NutsForPress"
* Find *NutsForPress Indexing and SEO*, click *Install Now*, and then click *Activate*
* Configure the plugin from the *NutsForPress* menu
* Enjoy!

= Manual Installation =

* Download *NutsForPress Indexing and SEO* from https://wordpress.org/plugins/nutsforpress-indexing-and-seo/
* In the WordPress administration area, go to *Plugins > Add New Plugin* and click *Upload Plugin*
* Choose the `nutsforpress-indexing-and-seo.zip` file from your download folder
* Click *Install Now*
* Activate *NutsForPress Indexing and SEO*
* Configure the plugin from the *NutsForPress* menu
* Enjoy!


== REST API ==

Version 2.8.2 makes the following post metadata available through the standard WordPress REST API:

* `_nfpndx_meta_title`: the custom SEO title
* `_nfpndx_meta_description`: the custom SEO description
* `_nfpndx_meta_title_blogname`: whether the site name is appended to the SEO title (`"1"` to append it or `"0"` not to append it)

The metadata can be read and written through the `meta` property of REST API requests and responses. The authenticated user must have permission to edit the target content.

For example, the following JSON can be included when creating or updating a post through `/wp-json/wp/v2/posts`:

    {
      "title": "Article title",
      "content": "Article content",
      "meta": {
        "_nfpndx_meta_title": "Custom SEO title",
        "_nfpndx_meta_description": "Custom SEO description",
        "_nfpndx_meta_title_blogname": "0"
      }
    }

The plugin registers these fields for every public post type. A custom post type must also be exposed through the REST API and support `custom-fields` for the metadata to be available through its endpoint.


== Changelog ==

= 2.8.2 =
* Added REST API read and write support for SEO titles, SEO descriptions, and the option to append the site name
* Added REST API support for all public post types that expose custom fields through REST
* Tested with WordPress 7.0
* Reviewed and corrected the plugin documentation

= 2.8.1 =
* Added the llms.txt link to robots.txt

= 2.8 =
* Added automatic llms.txt generation to improve communication with Large Language Models

= 2.7 =
* Introduced a new sitemap generation method that supports very large websites (tested with 30,000 pages)

= 2.6 =
* Fixed a bug (introduced in the 2.4 release) that caused the title tag to initially be set to "auto draft"

= 2.5 =
* Fixed a bug that caused incorrect character counting for titles and descriptions
* Fixed a bug (introduced in the 2.4 release) that displayed the wrong title in the title tag
* Added a more intuitive color-coded indicator for checking title and description lengths

= 2.4 =
* Fixed an issue caused by WordPress 6.7 that prevented the sitemap from being displayed correctly
* Disabled the meta description generated by the Hello theme when the plugin's title and description feature is active, preventing duplicate meta description tags
* Added support for inheriting titles and descriptions from Yoast SEO, allowing Yoast SEO to be disabled without losing existing metadata

= 2.3 =
* Fixed a bug that prevented some WPML-translated pages from being included in the sitemap

= 2.2 =
* Fixed a bug that prevented the "Skip empty terms" option from taking effect in the sitemap

= 2.1 =
* Fixed a bug that duplicated sitemap pages when WPML was active
* Fixed a bug that prevented product categories from displaying the meta description tag

= 2.0 =
* Fixed a bug that prevented pages and posts created before the plugin was installed from being added to the sitemap

= 1.9 =
* Removed the global-style dequeueing function introduced in version 1.3.3 because it caused problems with WordPress 6.4

= 1.8 =
* Fixed a bug that added noindex pages to the sitemap
* Fixed a bug that added some public custom post types to the sitemap even when they were not publicly queryable or were excluded from search

= 1.7 =
* Fixed a bug that reset the plugin options when WPML was installed and activated after the plugin had been configured
* When the website homepage and posts page are the same, the title and meta description now use the site name and tagline configured in WordPress

= 1.6 =
* Tested up to WordPress 6.2

= 1.5 =
* Fixed a bug that prevented the WooCommerce shop page title and description from being handled correctly

= 1.4 =
* Moved translations from the plugin package to translate.wordpress.org

= 1.3.4 =
* Added support for custom scripts in the body and footer

= 1.3.3 =
* Added options to prevent selected WordPress scripts and styles from being enqueued, including emoji, global styles, and the main block editor stylesheet

= 1.3.2 =
* Prevented the `jet-menu` post type used by JetElements Mega Menu from being added to the sitemap

= 1.3.1 =
* Added options to the "Replace Sitemap" feature for building a more complete and accurate sitemap

= 1.3 =
* Moved the SEO features from the discontinued "NutsForPress Images and Media" plugin into "NutsForPress Indexing and SEO"

= 1.2.3 =
* Added an option to omit custom head scripts while an administrator is logged in, which can be used as an Analytics filter

= 1.2.2 =
* Fixed an escaping error in a CSS rule that caused hidden option messages to be displayed

= 1.2.1 =
* Fixed a bug that displayed URLs in option descriptions as HTML code instead of clickable links

= 1.2 =
* Updated the shared NutsForPress root component to support an additional plugin
* Improved security by escaping output variables

= 1.1.5 =
* Added a CSS rule to prevent the title and description column from being squeezed in the WooCommerce product table on small screens

= 1.1.4 =
* Fixed a bug that prevented local options from being saved when WPML was not active

= 1.1.3 =
* Fixed an incorrect 404 header that prevented the sitemap from being retrieved

= 1.1.2 =
* Fixed a bug that prevented the backup featured image from being used in Facebook Open Graph and Twitter Card tags

= 1.1.1 =
* Added support for Analytics and other custom head scripts

= 1.1 =
* Added a small style enhancement and minor bug fixes

= 1.0 =
* First fully functional release


== Translations ==

* English: default language
* Italian: fully translated


== Credits ==

* Many thanks to [DkR](https://www.dkr.srl/) and [SviluppoEuropa](https://www.sviluppoeuropa.it/)!
