feat: Initial SEO integration
This commit is contained in:
20
wp-content/themes/moonshine/app/composables/useNodeSeo.ts
Normal file
20
wp-content/themes/moonshine/app/composables/useNodeSeo.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import type { NodeByUriQueryResult, NodeSeoFragment } from "#graphql/operations";
|
||||
|
||||
export function useNodeSeo(node: NodeByUriQueryResult["nodeByUri"]) {
|
||||
// Check if node has SEO data
|
||||
if (!node || !("seo" in node) || !node.seo) {
|
||||
return;
|
||||
}
|
||||
const { seo } = node as NodeSeoFragment;
|
||||
|
||||
useSeoMeta({
|
||||
title: seo?.title || undefined,
|
||||
description: seo?.description || undefined,
|
||||
robots: (seo?.robots || []).join(", "),
|
||||
ogTitle: seo?.openGraph?.title || undefined,
|
||||
ogDescription: seo?.openGraph?.description || undefined,
|
||||
ogImage: seo?.openGraph?.image?.url || undefined,
|
||||
ogUrl: seo?.canonicalUrl || undefined,
|
||||
twitterCard: "summary_large_image",
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user