Files
wp-headless/wp-content/themes/moonshine/app/composables/useNodeSeo.ts

21 lines
691 B
TypeScript

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",
});
}