<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//dichthuatplg.com/main-sitemap.xsl"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<sitemap>
		<loc>https://dichthuatplg.com/post-sitemap.xml</loc>
		<lastmod>2026-06-03T02:30:24+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://dichthuatplg.com/page-sitemap.xml</loc>
		<lastmod>2026-06-20T04:43:48+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://dichthuatplg.com/category-sitemap.xml</loc>
		<lastmod>2025-05-19T14:44:55+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://dichthuatplg.com/author-sitemap.xml</loc>
		<lastmod>2026-07-06T20:51:02+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://dichthuatplg.com/video-sitemap.xml</loc>
		<lastmod>2025-04-27T14:16:51+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://dichthuatplg.com/local-sitemap.xml</loc>
		<lastmod>2025-04-20T13:19:31+00:00</lastmod>
	</sitemap>
</sitemapindex>
<!-- XML Sitemap generated by Rank Math SEO Plugin (c) Rank Math - rankmath.com -->	<div id="plg-chat" class="fixed bottom-5 right-5 z-[60] flex flex-col items-end" data-plg-serverguess="1" >

		<!-- Chat panel -->
		<div id="plg-chat-panel"
		     data-phone="0936973413"
		     class="hidden mb-3 w-[340px] max-w-[calc(100vw-2.5rem)] flex flex-col rounded-2xl bg-white shadow-2xl ring-1 ring-bordr overflow-hidden"
		     style="height:460px;max-height:calc(100vh-7.5rem)">

			<!-- header -->
			<div class="flex items-center gap-3 px-4 py-3 bg-gradient-to-r from-navy to-navy2 text-white shrink-0">
				<span class="flex items-center justify-center w-9 h-9 rounded-full overflow-hidden shrink-0 bg-gradient-to-br from-[#4F74E0] to-[#2F4FB5]">
					<img src="https://dichthuatplg.com/wp-content/uploads/2025/05/Dien-Vien-MC-Hong-Kim-Hanh.jpg" alt="" style="width:36px;height:36px;object-fit:cover">				</span>
				<div class="flex-1 leading-tight">
					<p class="font-semibold text-sm">Phạm Lữ Gia</p>
					<p class="text-[11px] text-white/75 flex items-center gap-1"><span class="w-1.5 h-1.5 rounded-full bg-green-400"></span> Trực tuyến</p>
				</div>
				<button type="button" data-chat-clear class="grid place-items-center w-8 h-8 rounded-full hover:bg-white/15 transition" aria-label="Xoá hội thoại" title="Xoá hội thoại">
					<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M3 6h18M8 6V4h8v2M19 6l-1 14H6L5 6M10 11v6M14 11v6"/></svg>
				</button>
				<button type="button" data-chat-close class="grid place-items-center w-8 h-8 rounded-full hover:bg-white/15 transition" aria-label="Đóng">
					<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2.4" viewBox="0 0 24 24"><path d="M18 6 6 18M6 6l12 12"/></svg>
				</button>
			</div>

			<!-- banner "chế độ test admin" — ẩn mặc định, widget.js tự hiện dựa trên /widget-state (xem chú thích ở plg_widget_state_handle()) -->
			<div id="plg-testmode-badge" class="hidden shrink-0 px-3 py-1.5 text-[11px] font-medium text-amber-800 bg-amber-100 border-b border-amber-200 flex items-center gap-1.5">
				<span>🔒</span>
				<span>Chế độ xem thử (đang đăng nhập quản trị) — tin nhắn KHÔNG được ghi vào &quot;Chat trực tiếp&quot;.</span>
			</div>

			<!-- messages -->
			<div id="plg-chat-msgs" class="flex-1 overflow-y-auto p-4 space-y-3 bg-bgsoft text-ink">
				<div id="plg-greeting-bubble" class="max-w-[82%] rounded-2xl rounded-tl-sm bg-white ring-1 ring-bordr px-3 py-2 text-[13px] leading-snug shadow-softer whitespace-pre-wrap">Dạ em chào anh/chị, em là Phạm Lữ Gia, em hỗ trợ gì được cho mình ạ?</div>
			</div>

			<!-- quick contact -->
			<div class="grid gap-1.5 px-3 py-2 border-t border-bordr bg-white shrink-0" style="grid-template-columns:repeat(3,minmax(0,1fr))">
				<a href="tel:0936973413" data-plg-click="call" class="flex items-center justify-center gap-1 h-9 rounded-full bg-bgsoft ring-1 ring-bordr text-[12px] font-medium text-navy hover:bg-bordr/40 transition">
					<svg class="w-3.5 h-3.5 text-orange" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3-8.6A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.3-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z"/></svg> Gọi				</a>
				<a href="https://zalo.me/0936973413" target="_blank" rel="noopener" data-plg-click="zalo" class="flex items-center justify-center gap-1 h-9 rounded-full bg-bgsoft ring-1 ring-bordr text-[12px] font-medium text-navy hover:bg-bordr/40 transition">
											<img loading="lazy" decoding="async" src="https://stc-zlogin.zdn.vn/images/favicon.png" alt="" style="height:18px;width:auto;object-fit:contain">
										Zalo
				</a>
				<a href="mailto:dichthuat@plg.com.vn" data-plg-click="email" class="flex items-center justify-center gap-1 h-9 rounded-full bg-bgsoft ring-1 ring-bordr text-[12px] font-medium text-navy hover:bg-bordr/40 transition">
					<svg class="w-3.5 h-3.5 text-orange" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m2 6 10 7 10-7"/></svg> Email
				</a>
											</div>

			<!-- đang trả lời tin nhắn nào (hiện khi bấm nút Trả lời) -->
			<div id="plg-chat-reply" class="plg-reply hidden" hidden>
				<svg class="plg-reply-ic" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 17 4 12 9 7"/><path d="M20 18v-2a4 4 0 0 0-4-4H4"/></svg>
				<span class="plg-reply-txt"></span>
				<button type="button" id="plg-chat-reply-x" class="plg-reply-x" aria-label="Huỷ trả lời">
					<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18M6 6l12 12"/></svg>
				</button>
			</div>

			<!-- input -->
			<form id="plg-chat-form" class="flex items-center gap-2 p-3 border-t border-bordr bg-white shrink-0">
								<input id="plg-chat-file" type="file" accept="image/*" class="hidden" hidden>
				<button type="button" id="plg-chat-attach" class="grid place-items-center w-10 h-10 rounded-full bg-bgsoft ring-1 ring-bordr text-navy shrink-0 hover:bg-bordr/40 transition" aria-label="Gửi ảnh" title="Gửi ảnh sản phẩm">
					<svg class="w-5 h-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M21 15V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.1-3.1a2 2 0 0 0-2.8 0L6 21"/><path d="M19 16v6M16 19h6"/></svg>
				</button>
								<input id="plg-chat-input" type="text" autocomplete="off" placeholder="Nhập tin nhắn..." class="flex-1 min-w-0 h-10 px-4 rounded-full bg-bgsoft ring-1 ring-bordr text-sm text-ink placeholder-grayt outline-none focus:ring-2 focus:ring-orange/50 transition">
				<button type="submit" class="grid place-items-center w-10 h-10 rounded-full bg-gradient-to-r from-orange to-orange2 text-white shrink-0 hover:brightness-105 active:scale-95 transition" aria-label="Gửi">
					<svg class="w-5 h-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M22 2 11 13M22 2l-7 20-4-9-9-4z"/></svg>
				</button>
			</form>
								</div>

		<!-- Teaser toast (auto shows after delay) -->
		<div id="plg-chat-toast" class="absolute bottom-[4.5rem] right-0 w-max max-w-[260px] flex items-center gap-2 rounded-2xl bg-white shadow-2xl ring-1 ring-bordr pl-2.5 pr-1.5 py-2 opacity-0 translate-y-2 pointer-events-none transition duration-300">
			<div data-chat-open class="flex items-center gap-2.5 cursor-pointer">
				<span class="flex items-center justify-center w-9 h-9 rounded-full overflow-hidden bg-gradient-to-br from-navy to-navy2 text-white shrink-0">
					<img src="https://dichthuatplg.com/wp-content/uploads/2025/05/Dien-Vien-MC-Hong-Kim-Hanh.jpg" alt="" style="width:36px;height:36px;object-fit:cover">				</span>
				<div class="leading-tight pr-1">
					<p class="text-[13px] font-bold text-navy">Phạm Lữ Gia</p>
					<p class="text-[11px] text-grayt">Bạn cần tư vấn gì không?</p>
				</div>
			</div>
			<button type="button" data-toast-close class="grid place-items-center w-6 h-6 rounded-full text-grayt hover:bg-bgsoft shrink-0" aria-label="Đóng">
				<svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2.4" viewBox="0 0 24 24"><path d="M18 6 6 18M6 6l12 12"/></svg>
			</button>
		</div>

		<!-- Floating toggle button -->
		<button type="button" data-chat-toggle class="chat-fab grid place-items-center w-14 h-14 rounded-full bg-gradient-to-br from-[#4F74E0] to-[#2F4FB5] text-white shadow-navy hover:brightness-110 active:scale-95 transition" aria-label="Chat tư vấn">
			<svg data-chat-icon="open" style="width:26px;height:26px" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>			<svg data-chat-icon="close" class="w-6 h-6 hidden" fill="none" stroke="currentColor" stroke-width="2.4" viewBox="0 0 24 24"><path d="M18 6 6 18M6 6l12 12"/></svg>
		</button>
	</div>
	<script>
	// QUAN TRỌNG — CHỦ Ý ĐỂ INLINE (không đưa vào assets/widget.js):
	// Nhiều plugin/CDN cache có tính năng "xoá query string khỏi file tĩnh"
	// (rất phổ biến, ví dụ WP Rocket > File Optimization > Remove Query
	// Strings). Khi bật, cơ chế cache-bust ?ver=... của widget.js bị vô hiệu
	// hoàn toàn — trình duyệt/CDN có thể phục vụ MÃI MÃI 1 bản widget.js cũ
	// dù plugin đã cập nhật, và bản JS cũ đó KHÔNG THỂ tự sửa chính mình.
	// Đoạn bootstrap NHỎ, QUAN TRỌNG NHẤT (lấy nonce mới + xác nhận đúng
	// trạng thái ẩn/hiện) vì vậy được đặt ngay TRONG HTML — phụ thuộc vào
	// cache của TRANG (thường ngắn hạn/hay được xoá hơn nhiều so với cache
	// file tĩnh), độc lập với việc widget.js bên ngoài có bị "đông cứng" hay
	// không. widget.js (file ngoài) chỉ còn đảm nhiệm phần TƯƠNG TÁC (mở
	// khung chat, gửi tin, hiệu ứng...) — nếu nó bị cache cũ, trải nghiệm có
	// thể hơi cũ nhưng nonce/trạng thái hiển thị vẫn luôn đúng nhờ đoạn này.
	(function () {
		var STATE_URL = "https:\/\/dichthuatplg.com\/wp-json\/plg\/v1\/widget-state";
		var AJAX_URL  = "https:\/\/dichthuatplg.com\/wp-admin\/admin-ajax.php";

		// Đảm bảo window.plgChat có ĐỦ các URL endpoint cần thiết — quan trọng cho
		// tình huống PHP hoàn toàn KHÔNG chạy lúc render trang gốc (trang tĩnh), khi
		// đó khối wp_localize_script() bình thường (nơi các URL này được sinh ra)
		// CŨNG chưa từng chạy, nên window.plgChat có thể hoàn toàn chưa tồn tại — chỉ
		// gán khi CHƯA có sẵn, để không ghi đè giá trị đúng đã có từ localize thật.
		window.plgChat = window.plgChat || {};
		var __defaults = {
			url:         "https:\/\/dichthuatplg.com\/wp-json\/plg\/v1\/chat",
			imageUrl:    "https:\/\/dichthuatplg.com\/wp-json\/plg\/v1\/image",
			liveUrl:     "https:\/\/dichthuatplg.com\/wp-json\/plg\/v1\/live",
			feedbackUrl: "https:\/\/dichthuatplg.com\/wp-json\/plg\/v1\/feedback",
			contactClickUrl: "https:\/\/dichthuatplg.com\/wp-json\/plg\/v1\/contact-click",
			stateUrl:    STATE_URL,
			htmlUrl:     "https:\/\/dichthuatplg.com\/wp-json\/plg\/v1\/widget-html",
			ajaxUrl:     AJAX_URL
			// LƯU Ý: 'page' (URL/tiêu đề trang đang xem) KHÔNG đặt mặc định ở đây — hàm
			// plg_widget_page_context() dựa vào ngữ cảnh truy vấn của TRANG ĐANG RENDER,
			// nhưng khi khối này chạy qua REST /widget-html, ngữ cảnh đó là của chính
			// request REST (sai). widget.js tự điền window.plgChat.page bằng
			// window.location/document.title (luôn đúng, bất kể qua đường nào) nếu thấy
			// còn thiếu — xem đoạn fallback fetch trong assets/widget.js.
		};
		for (var __k in __defaults) { if (window.plgChat[__k] === undefined) { window.plgChat[__k] = __defaults[__k]; } }

		function apply(state) {
			window.plgChat = window.plgChat || {};
			if (state.nonce) { window.plgChat.nonce = state.nonce; }
			if (state.chatNonce) { window.plgChat.chatNonce = state.chatNonce; }
			window.plgChat.enabled = !!state.enabled; // quan trọng: widget.js (kể cả bản cũ bị cache) đọc cờ này lúc GỬI tin, không chỉ lúc hiển thị.
			var root = document.getElementById('plg-chat');
			if (root) { root.style.display = state.enabled ? '' : 'none'; }
			var badge = document.getElementById('plg-testmode-badge');
			if (badge) { badge.classList.toggle('hidden', !state.testMode); }
			window.plgChat.__stateReady = true;
		}
		// Dự phòng qua admin-ajax.php khi REST (/wp-json/) bị chặn — vd 1 plugin bảo
		// mật khác trên site giới hạn REST API chỉ cho user đã đăng nhập (rất phổ
		// biến, trả 401 cho MỌI khách vãng lai, không riêng gì plugin này).
		function viaBridge() {
			var body = 'action=plg_bridge&route=widget-state';
			return fetch(AJAX_URL, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: body, cache: 'no-store' })
				.then(function (r) { return r.ok ? r.json() : null; });
		}
		function useBridgeFromNowOn() {
			window.plgChat = window.plgChat || {};
			window.plgChat.useAjaxBridge = true; // widget.js đọc cờ này để mọi lượt SAU cũng đi thẳng qua bridge, không phí công thử lại REST đã biết là bị chặn.
		}
		fetch(STATE_URL, { headers: { 'Accept': 'application/json' }, cache: 'no-store' })
			.then(function (r) {
				if (401 === r.status) { useBridgeFromNowOn(); return viaBridge(); }
				return r.ok ? r.json() : null;
			})
			.then(function (state) { if (state) { apply(state); } })
			.catch(function () {
				// Lỗi khác (mạng/CORS/timeout) — vẫn thử qua bridge phòng trường hợp REST bị
				// chặn kiểu không trả 401 chuẩn (vd bị nuốt hoàn toàn bởi 1 số tường lửa).
				useBridgeFromNowOn();
				viaBridge().then(function (state) { if (state) { apply(state); } }).catch(function () {});
			});
	})();
	</script>
	