<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//soangialutrungdung.com/main-sitemap.xsl"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<sitemap>
		<loc>https://soangialutrungdung.com/post-sitemap1.xml</loc>
		<lastmod>2026-08-21T16:11:46+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://soangialutrungdung.com/post-sitemap2.xml</loc>
		<lastmod>2026-08-21T16:10:03+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://soangialutrungdung.com/page-sitemap.xml</loc>
		<lastmod>2026-08-23T04:25:52+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://soangialutrungdung.com/blocks-sitemap.xml</loc>
		<lastmod>2025-12-11T14:40:29+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://soangialutrungdung.com/product-sitemap.xml</loc>
		<lastmod>2026-06-30T02:44:59+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="0909964389"
		     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://soangialutrungdung.com/wp-content/uploads/2026/08/avatar.png" alt="" style="width:36px;height:36px;object-fit:cover">				</span>
				<div class="flex-1 leading-tight">
					<p class="font-semibold text-sm">Tư Vấn Viên</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> Đang 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">Chào bạn, đây là trang viết chia sẻ nội dung chữa lành của soạn giả Lữ Trung Dung. Hiện tại, chúng tôi đang phân phối độc quyền Bộ thẻ Ngẫm Ngôn Giải Tâm. Nếu bạn quan tâm đến sức khỏe tinh thần và muốn tìm hiểu thêm về nội dung, chúng tôi ở đây luôn sẵn sàng hỗ trợ bạn.</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:0909964389" 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/0909964389" 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:khaivantamly@gmail.com" 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://soangialutrungdung.com/wp-content/uploads/2026/08/avatar.png" alt="" style="width:36px;height:36px;object-fit:cover">				</span>
				<div class="leading-tight pr-1">
					<p class="text-[13px] font-bold text-navy">Tư Vấn Viên</p>
					<p class="text-[11px] text-grayt">Hãy nhắn mình nếu cần hỗ trợ nhé!</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"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></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:\/\/soangialutrungdung.com\/wp-json\/plg\/v1\/widget-state";
		var AJAX_URL  = "https:\/\/soangialutrungdung.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:\/\/soangialutrungdung.com\/wp-json\/plg\/v1\/chat",
			imageUrl:    "https:\/\/soangialutrungdung.com\/wp-json\/plg\/v1\/image",
			liveUrl:     "https:\/\/soangialutrungdung.com\/wp-json\/plg\/v1\/live",
			feedbackUrl: "https:\/\/soangialutrungdung.com\/wp-json\/plg\/v1\/feedback",
			contactClickUrl: "https:\/\/soangialutrungdung.com\/wp-json\/plg\/v1\/contact-click",
			stateUrl:    STATE_URL,
			htmlUrl:     "https:\/\/soangialutrungdung.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>
	