{"id":302337,"date":"2026-04-28T08:52:38","date_gmt":"2026-04-28T08:52:38","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/hreflang-customizer\/"},"modified":"2026-04-28T09:47:59","modified_gmt":"2026-04-28T09:47:59","slug":"hreflang-customizer","status":"publish","type":"plugin","link":"https:\/\/fa.wordpress.org\/plugins\/hreflang-customizer\/","author":18767423,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.0","stable_tag":"1.1.0","tested":"6.9.4","requires":"5.8","requires_php":"7.0","requires_plugins":null,"header_name":"Hreflang Customizer","header_author":"Hopeleaf Technologies","header_description":"Easily generate hreflang tags on any WordPress site \u2014 no translation plugin required. Works standalone or with Weglot.","assets_banners_color":"0d0491","last_updated":"2026-04-28 09:47:59","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/ko-fi.com\/jemssaliya","header_plugin_uri":"https:\/\/seo-hreflang.com\/","header_author_uri":"https:\/\/hopeleaftechnologies.com\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":108,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"jems007","date":"2026-04-28 09:47:59"}},"upgrade_notice":{"1.1.0":"<p>Major free release. Standalone mode, redesigned UI, improved security. Recommended for all users.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3517036,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3517037,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3517034,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500-es.png":{"filename":"banner-1544x500-es.png","revision":3517042,"resolution":"1544x500","location":"assets","locale":"es"},"banner-1544x500-es_ES.png":{"filename":"banner-1544x500-es_ES.png","revision":3517041,"resolution":"1544x500","location":"assets","locale":"es_ES"},"banner-1544x500-rtl.png":{"filename":"banner-1544x500-rtl.png","revision":3517040,"resolution":"1544x500","location":"assets","locale":""},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3517043,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250-es.png":{"filename":"banner-772x250-es.png","revision":3517045,"resolution":"772x250","location":"assets","locale":"es"},"banner-772x250-es_ES.png":{"filename":"banner-772x250-es_ES.png","revision":3517044,"resolution":"772x250","location":"assets","locale":"es_ES"},"banner-772x250-rtl.png":{"filename":"banner-772x250-rtl.png","revision":3517046,"resolution":"772x250","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3517047,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3517039,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3517038,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Settings page \u2014 searchable language card grid with sidebar tag panel.","2":"Selected languages shown as tag chips with the hreflang code badge.","3":"System status page with environment diagnostics."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2993,163963,261250,99,186],"plugin_category":[48,55],"plugin_contributors":[261251],"plugin_business_model":[],"class_list":["post-302337","plugin","type-plugin","status-publish","hentry","plugin_tags-hreflang","plugin_tags-hreflang-tags","plugin_tags-international-seo","plugin_tags-multilingual","plugin_tags-seo","plugin_category-language-tools","plugin_category-seo-and-marketing","plugin_contributors-jems007","plugin_committers-jems007"],"banners":{"banner":"https:\/\/ps.w.org\/hreflang-customizer\/assets\/banner-772x250-rtl.png?rev=3517046","banner_2x":"https:\/\/ps.w.org\/hreflang-customizer\/assets\/banner-1544x500-rtl.png?rev=3517040","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/hreflang-customizer\/assets\/icon.svg?rev=3517034","icon":"https:\/\/ps.w.org\/hreflang-customizer\/assets\/icon.svg?rev=3517034","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/hreflang-customizer\/assets\/screenshot-1.png?rev=3517039","caption":"Settings page \u2014 searchable language card grid with sidebar tag panel."},{"src":"https:\/\/ps.w.org\/hreflang-customizer\/assets\/screenshot-2.png?rev=3517038","caption":"Selected languages shown as tag chips with the hreflang code badge."}],"raw_content":"<!--section=description-->\n<p><strong>Hreflang Customizer<\/strong> is a free plugin that generates hreflang tags for your WordPress pages automatically. It works on any site \u2014 no multilingual plugin is required.<\/p>\n\n<p>Hreflang tags tell search engines which language and region each page targets. This prevents duplicate-content issues across multilingual or multi-regional sites and helps the right version of your page rank in the right country.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li>\u2705 Works <strong>without<\/strong> any translation plugin \u2014 standalone mode out of the box<\/li>\n<li>\u2705 Also integrates with <strong>Weglot<\/strong> for translated URL mapping<\/li>\n<li>\u2705 Searchable language picker with 180+ languages and regional variants<\/li>\n<li>\u2705 Selected languages shown as removable tag chips with language codes<\/li>\n<li>\u2705 Language list cached via WordPress Transients API (no repeated API calls)<\/li>\n<li>\u2705 Clean, modern admin UI \u2014 fully responsive<\/li>\n<li>\u2705 No upsells, no premium tier \u2014 100% free<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<p><strong>Standalone mode:<\/strong> Select your target language codes in the settings page. The plugin outputs one <code>&lt;link rel=\"alternate\" hreflang=\"...\"&gt;<\/code> tag per selected code in the <code>&lt;head&gt;<\/code> of every page, pointing to the canonical URL of that page.<\/p>\n\n<p><strong>Weglot mode:<\/strong> If Weglot is installed and active, the plugin maps Weglot's translated URLs to your selected hreflang codes automatically.<\/p>\n\n<h4>Example Output<\/h4>\n\n<pre><code>&lt;link rel=\"alternate\" href=\"https:\/\/yoursite.com\/about\/\" hreflang=\"en-AU\" \/&gt;\n&lt;link rel=\"alternate\" href=\"https:\/\/yoursite.com\/about\/\" hreflang=\"en-GB\" \/&gt;\n&lt;link rel=\"alternate\" href=\"https:\/\/yoursite.com\/\" hreflang=\"x-default\" \/&gt;\n<\/code><\/pre>\n\n<h4>Third-Party Service<\/h4>\n\n<p>This plugin optionally fetches an extended language list from <strong>https:\/\/app.seo-hreflang.com\/api\/languages<\/strong> to supplement its built-in language database. The request is made at most once every 12 hours. No personal data, user data, or site content is transmitted \u2014 the request contains no body payload. The result is cached locally using the WordPress Transients API.<\/p>\n\n<p>If the external service is unavailable, the plugin automatically falls back to its built-in list of 180+ languages and continues to work normally.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/app.seo-hreflang.com\/<\/li>\n<li>Privacy Policy: https:\/\/seo-hreflang.com\/privacy-policy\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress dashboard, go to <strong>Plugins &gt; Add New<\/strong><\/li>\n<li>Search for <strong>Hreflang Customizer<\/strong><\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<li>Go to <strong>Hreflang &gt; Settings<\/strong> and select your target languages<\/li>\n<li>Click <strong>Save Languages<\/strong> \u2014 hreflang tags will appear in your site's <code>&lt;head&gt;<\/code> immediately<\/li>\n<\/ol>\n\n<p>Alternatively, download the zip and upload via <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20translation%20plugin%3F\"><h3>Do I need a translation plugin?<\/h3><\/dt>\n<dd><p>No. The plugin works standalone. It outputs hreflang tags pointing to your current page URLs. If you also use Weglot, it will automatically map Weglot's translated URLs instead.<\/p><\/dd>\n<dt id=\"which%20translation%20plugins%20are%20supported%3F\"><h3>Which translation plugins are supported?<\/h3><\/dt>\n<dd><p>Currently Weglot is fully supported in addition to standalone mode. Support for WPML, TranslatePress and Polylang is planned for a future release.<\/p><\/dd>\n<dt id=\"what%20is%20x-default%3F\"><h3>What is x-default?<\/h3><\/dt>\n<dd><p>x-default is a special hreflang value that tells Google which page to show when no other language matches the user's browser language. When selected, it points to your site's home URL.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20make%20external%20requests%3F\"><h3>Does the plugin make external requests?<\/h3><\/dt>\n<dd><p>Yes, optionally. It requests a language list from https:\/\/app.seo-hreflang.com\/api\/languages and caches the result for 12 hours. If the server is unreachable, the built-in language list is used. No user or site data is sent.<\/p><\/dd>\n<dt id=\"what%20are%20the%20minimum%20requirements%3F\"><h3>What are the minimum requirements?<\/h3><\/dt>\n<dd><p>WordPress 5.8 or higher and PHP 5.6.20 or higher.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Plugin is now fully free \u2014 no premium tier<\/li>\n<li>Added standalone mode: hreflang tags work without any translation plugin<\/li>\n<li>Added Weglot integration for translated URL mapping<\/li>\n<li>Completely redesigned admin UI with searchable language grid<\/li>\n<li>Language codes now shown as badge chips on selected tags<\/li>\n<li>Built-in static language fallback (180+ languages) when API is unavailable<\/li>\n<li>Added \"Buy me a coffee\" donate link<\/li>\n<li>Fixed: CSS\/JS now loads reliably on all server configurations<\/li>\n<li>Fixed: all WordPress.org security requirements (sanitize, escape, validate)<\/li>\n<li>Removed: premium\/pro version references<\/li>\n<li>Removed: Select2 dependency<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Easily add hreflang tags to any WordPress site. Works standalone \u2014 no translation plugin required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/302337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=302337"}],"author":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jems007"}],"wp:attachment":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=302337"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=302337"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=302337"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=302337"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=302337"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=302337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}