{"id":302176,"date":"2026-05-06T13:10:40","date_gmt":"2026-05-06T13:10:40","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simple-hreflang\/"},"modified":"2026-05-06T13:10:29","modified_gmt":"2026-05-06T13:10:29","slug":"cannyforge-hreflang","status":"publish","type":"plugin","link":"https:\/\/ru.wordpress.org\/plugins\/cannyforge-hreflang\/","author":12533770,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.1.0","stable_tag":"0.1.0","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"CannyForge Hreflang","header_author":"User256","header_description":"Manage small translation groups for pages and generate a dedicated hreflang XML sitemap.","assets_banners_color":"","last_updated":"2026-05-06 13:10:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":23,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"user256","date":"2026-05-06 13:10:29"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3524458,"resolution":false,"location":"assets","locale":false}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3524458,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3524458,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3524458,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Settings page with translation group and hreflang controls.","2":"Add to group modal.","3":"Generated hreflang sitemap URL."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2993,99,1557,262025],"plugin_category":[48,55],"plugin_contributors":[262026],"plugin_business_model":[],"class_list":["post-302176","plugin","type-plugin","status-publish","hentry","plugin_tags-hreflang","plugin_tags-multilingual","plugin_tags-sitemap","plugin_tags-translation-groups","plugin_category-language-tools","plugin_category-seo-and-marketing","plugin_contributors-user256","plugin_committers-user256"],"banners":[],"icons":{"svg":"https:\/\/ps.w.org\/cannyforge-hreflang\/assets\/icon.svg?rev=3524458","icon":"https:\/\/ps.w.org\/cannyforge-hreflang\/assets\/icon.svg?rev=3524458","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/cannyforge-hreflang\/assets\/screenshot-1.png?rev=3524458","caption":"Settings page with translation group and hreflang controls."},{"src":"https:\/\/ps.w.org\/cannyforge-hreflang\/assets\/screenshot-2.png?rev=3524458","caption":"Add to group modal."},{"src":"https:\/\/ps.w.org\/cannyforge-hreflang\/assets\/screenshot-3.png?rev=3524458","caption":"Generated hreflang sitemap URL."}],"raw_content":"<!--section=description-->\n<p>For small sites with a handful of international pages creating an entire multisite s often excessive. Enter CannyForge Hreflang. This plugin lets you organize related pages into translation groups with language and optional region settings. It generates a standalone sitemap at \/hreflang-sitemap.xml so search engines can discover alternate versions of your content.<\/p>\n\n<h3>Support<\/h3>\n\n<p>For support, report issues in the source repo or contact the plugin author. This plugin is intended for small sites managing manual hreflang groupings and does not provide automatic translation or URL rewriting beyond sitemap output.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>cannyforge-hreflang<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Go to <strong>Settings &gt; CannyForge Hreflang<\/strong>.<\/li>\n<li>Optionally configure the enabled post types and minimum group size.<\/li>\n<li>If the sitemap URL is not immediately accessible, visit <strong>Settings &gt; Permalinks<\/strong> and save changes to refresh rewrite rules.<\/li>\n<li>Manage page hreflang values from the plugin settings page or the page edit screen.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20add%20a%20page%20to%20a%20hreflang%20group%3F\"><h3>How do I add a page to a hreflang group?<\/h3><\/dt>\n<dd><p>Use the plugin settings page or the page edit screen to assign a Translation Group, language, and optional region.<\/p><\/dd>\n<dt id=\"why%20is%20my%20sitemap%20not%20generating%3F\"><h3>Why is my sitemap not generating?<\/h3><\/dt>\n<dd><p>Only groups with enough published pages and valid hreflang values are included. If needed, flush rewrite rules using the button on Settings &gt; CannyForge Hreflang.<\/p><\/dd>\n<dt id=\"what%20does%20x-default%20do%3F\"><h3>What does x-default do?<\/h3><\/dt>\n<dd><p>Mark one page in each group as x-default so search engines know the default alternate for users who do not match a specific locale.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release with translation group management, x-default support, and hreflang sitemap generation.<\/li>\n<\/ul>","raw_excerpt":"Group equivalent pages and publish hreflang relationships in a dedicated XML sitemap.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/302176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=302176"}],"author":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/user256"}],"wp:attachment":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=302176"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=302176"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=302176"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=302176"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=302176"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=302176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}