<?php/** * Plugin Name: QNG Locality Pagination Repair
	  *  * Description: Restores crawlable /page/N/ routes for the three verified locality category archives.
	  *  * Version: 1.1.2
	  *  */
if (!defined('ABSPATH')) { exit; }
function qng_lpr_slugs() { return array('gai-goi-cam-thanh','gai-goi-nghia-lo','gai-goi-truong-quang-trong'); }
function qng_lpr_register_rules() { foreach (qng_lpr_slugs() as $slug) { add_rewrite_rule('^'.preg_quote($slug,'~').'/page/([0-9]+)/?$','index.php?category_name='.$slug.'&paged=$matches[1]','top'); } }
add_action('init','qng_lpr_register_rules',1);
register_activation_hook(__FILE__,function(){ $rules=get_option('rewrite_rules',array()); if(!get_option('qng_lpr_pre_activation',false)){ add_option('qng_lpr_pre_activation',array('captured_at'=>gmdate('c'),'type'=>gettype($rules),'sha256'=>hash('sha256',serialize($rules))),'',false); } qng_lpr_register_rules(); flush_rewrite_rules(false); });
register_deactivation_hook(__FILE__,function(){ flush_rewrite_rules(false); });
function qng_lpr_request_context(){ $path=trim((string)wp_parse_url((string)($_SERVER['REQUEST_URI']??''),PHP_URL_PATH),'/'); if(!preg_match('~^([^/]+)(?:/page/([0-9]+))?/?$~',$path,$match)){return null;} $slug=sanitize_title($match[1]); if(!in_array($slug,qng_lpr_slugs(),true)){return null;} $term=get_category_by_slug($slug); if(!$term||is_wp_error($term)){return null;} return array('term'=>$term,'page'=>isset($match[2])?max(1,absint($match[2])):1); }
function qng_lpr_current_term(){ $context=qng_lpr_request_context(); return $context?$context['term']:null; }
function qng_lpr_current_page(){ $context=qng_lpr_request_context(); return $context?$context['page']:1; }
function qng_lpr_paged_title($title){ $term=qng_lpr_current_term(); $page=qng_lpr_current_page(); if(!$term||$page<2){return $title;} return sprintf('%s, Quảng Ngãi – Trang %d',$term->name,$page); }
add_filter('pre_get_document_title','qng_lpr_paged_title',PHP_INT_MAX);
add_filter('rank_math/frontend/title','qng_lpr_paged_title',PHP_INT_MAX);
function qng_lpr_paged_description($description){ $term=qng_lpr_current_term(); $page=qng_lpr_current_page(); if(!$term||$page<2){return $description;} return sprintf('Trang %1$d danh sách %2$s, Quảng Ngãi với hình ảnh, mức giá tham khảo và thời điểm cập nhật. Xem kỹ từng hồ sơ trước khi liên hệ.',$page,$term->name); }
add_filter('rank_math/frontend/description','qng_lpr_paged_description',PHP_INT_MAX);
add_action('template_redirect',function(){ if(!is_paged()||!qng_lpr_current_term()){return;} $page=qng_lpr_current_page(); if($page>1&&!have_posts()){status_header(404);nocache_headers();}},1);
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//gaigoiquangngai.com/main-sitemap.xsl"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<sitemap>
		<loc>https://gaigoiquangngai.com/post-sitemap.xml</loc>
		<lastmod>2026-10-22T04:44:23+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://gaigoiquangngai.com/page-sitemap.xml</loc>
		<lastmod>2026-10-21T16:51:27+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://gaigoiquangngai.com/category-sitemap.xml</loc>
		<lastmod>2026-10-22T04:44:23+00:00</lastmod>
	</sitemap>
</sitemapindex>
<!-- XML Sitemap generated by Rank Math SEO Plugin (c) Rank Math - rankmath.com -->