|
|
@@ -248,6 +248,41 @@ function PostView() {
|
|
|
}
|
|
|
}, [slug]);
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
+ if (post) {
|
|
|
+ const setMeta = (name, content) => {
|
|
|
+ let element = document.querySelector(`meta[name='${name}']`);
|
|
|
+ if (!element) {
|
|
|
+ element = document.createElement("meta");
|
|
|
+ element.setAttribute("name", name);
|
|
|
+ document.head.appendChild(element);
|
|
|
+ }
|
|
|
+ element.setAttribute("content", content);
|
|
|
+ };
|
|
|
+
|
|
|
+ setMeta("og:title", post.title);
|
|
|
+ setMeta("og:description", post.description);
|
|
|
+ setMeta("og:type", "article");
|
|
|
+ setMeta("og:url", window.location.href);
|
|
|
+ }
|
|
|
+
|
|
|
+ return () => {
|
|
|
+ const metaTags = [
|
|
|
+ "og:title",
|
|
|
+ "og:description",
|
|
|
+ "og:type",
|
|
|
+ "og:url",
|
|
|
+ "og:image",
|
|
|
+ ];
|
|
|
+ metaTags.forEach((name) => {
|
|
|
+ const element = document.querySelector(`meta[name='${name}']`);
|
|
|
+ if (element) {
|
|
|
+ element.remove();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ };
|
|
|
+ }, [post]);
|
|
|
+
|
|
|
useEffect(() => {
|
|
|
// Reset title when component unmounts
|
|
|
return () => {
|