스키마 API로 Yoast SEO의 구조화된 데이터 커스터마이징 2부
스키마 API
Yoast SEO에는 스키마 출력을 변경하기 위한 API 빌드가 있습니다: Schema API . 이것이 우리가 사용할 것입니다.
이 모드에서 개발을 더 쉽게 하기 위해 yoast는 구조화된 데이터에 대해 개발 모드를 켜는 작은 스니펫도 제공했습니다. 이것은 축소되지 않은 json-ld를 인쇄하므로 쉽게 읽을 수 있습니다. 이것을
functions.php
에 넣으십시오. (프로덕션에서는 사용하지 마세요)add_filter( 'yoast_seo_development_mode', '__return_true' );
스키마 소품 사용자 정의
조각(단일 스키마)의 속성을 변경하려면
wpseo_schema_<class>
필터를 사용합니다. <class>
는 변경할 스키마를 나타냅니다. 따라서 Article
의 경우 wpseo_schema_article
를 사용합니다.예 1 조직에 속성 "email" 추가:
// functions.php
add_filter( 'wpseo_schema_organization', 'add_email_to_organization' );
function add_email_to_organization( $data ) {
$data['email'] = get_option('company-email');
return $data;
}
결과는 다음과 같습니다. (간단한 예)
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://www.mycompany.com/#Organization",
"url": "https://www.mycompany.com/",
"name": "My Company",
"email": "[email protected]"
}
]
}
$data
객체는 "@type", "id"등의 모든 속성을 보유합니다. 새 속성을 추가한 다음 $data
를 반환하기만 하면 됩니다.get_option
로 헷갈리실 경우 . 그것은 스키마 API가 아니라 WordPress settings API 입니다. WordPress 설정 및 기본 설정을 사용자 지정할 수 있습니다. 그런 다음 get_option
함수를 사용하여 콘텐츠를 검색합니다. get_option
를 사용하여 get_option("blogname")
또는 get_option("siteurl")
와 같이 익숙한 데이터를 검색할 수 있습니다. 위의 예에서 사용자 정의 필드 "company-email"을 검색합니다.예 2 기존 속성 변경:
// functions.php
add_filter( 'wpseo_schema_organization', 'change_name_of_organization' );
function change_name_of_organization( $data ) {
$data['name'] = "A custom name";
return $data;
}
결과는 다음과 같습니다. (간단한 예)
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://www.mycompany.com/#Organization",
"url": "https://www.mycompany.com/",
"name": "A custom name"
}
]
}
보시다시피 속성을 추가하거나 편집(덮어쓰기)하는 것은 거의 동일합니다.
예 3 기사에서 속성 "potentialAction" 제거:
// functions.php
add_filter( 'wpseo_schema_article', 'remove_potentialAction_property_from_article', 11, 1 );
function remove_potentialAction_property_from_article( $data ) {
if (array_key_exists("potentialAction", $data)) {
unset($data['potentialAction']);
}
return $data;
}
코드는 꽤 자명한 것 같습니다. 속성 "potentialAction"이 있으면 제거합니다.
예 4 기사에 조건부로 "상"을 추가합니다.
이러한 기능에서 WordPress의 모든 조건부 논리를 사용할 수 있다는 점에 유의하는 것이 중요합니다. 특정 블로그 게시물로 상을 받았고 이를 구조화된 데이터에 추가하고 싶다고 가정해 보겠습니다.
// functions.php
add_filter('wpseo_schema_article', 'conditionally_add_award_to_article');
function conditionally_add_award_to_article( $data ){
if ( ! is_single( 123 ) ) {
return $data;
}
$data['award'] = 'Some Fancy Award';
return $data;
}
전체 조각 제거
조각을 제거하려면
wpseo_schema_graph_pieces
필터를 사용합니다. 웹 사이트에서 Breadcrumb
스키마를 제거한다고 가정해 보겠습니다.// functions.php
add_filter( 'wpseo_schema_graph_pieces', 'remove_breadcrumbs_from_schema', 11, 2 );
/**
* Removes the breadcrumb graph pieces from the schema collector.
*
* @param array $pieces The current graph pieces.
* @param string $context The current context.
*
* @return array The remaining graph pieces.
*/
function remove_breadcrumbs_from_schema( $pieces, $context ) {
return \array_filter( $pieces, function( $piece ) {
return ! $piece instanceof \Yoast\WP\SEO\Generators\Schema\Breadcrumb;
});
}
주석에서 알 수 있듯이 스키마 수집기에서
Breadcrumb
를 제거합니다. 따라서 Breadcrumb
조각을 렌더링하는 함수가 호출되지 않습니다.그러나 에서 본 것처럼 문제가 발생합니다. 모든 조각이 연결되어 있습니다.
Breadcrumb
를 제거한 후에도 Webpage
는 여전히 Breadcrumb
를 참조하고 있습니다.{
"@type": "WebPage",
"@id": "https://www.mycompany.com/page1/#webpage",
"url": "https://www.mycompany.com/page1/",
"name": "Page 1",
"isPartOf": {
"@id": "https://www.mycompany.com/#website"
},
"breadcrumb": {
"@id": "https://www.mycompany.com/page1/#breadcrumb"
}
}
다행히 스키마 조각에서 속성을 제거하는 방법을 이미 알고 있습니다.
// functions.php
add_filter( 'wpseo_schema_webpage', 'remove_breadcrumbs_property_from_webpage', 11, 1 );
function remove_breadcrumbs_property_from_webpage( $data ) {
if (array_key_exists('breadcrumb', $data)) {
unset($data['breadcrumb']);
}
return $data;
}
요약
이제 단일 조각에서 속성을 추가, 변경 또는 제거하는 방법을 알게 되었습니다. 우리는 또한 조각을 제거하는 예를 보여주었습니다. 여기서 중요한 참고 사항은 항목을 편집하거나 제거하기 전에 링크를 찾는 것입니다. 체인이 끊어지지 않도록 하십시오.
마지막으로 이것은 단지 소개일 뿐임을 언급해야 합니다. 더 많은 필터와 가능성이 있습니다. 따라서 schema API docs을 읽는 데 시간을 투자해야 합니다. 걱정하지 마세요. 짧습니다.
이 시리즈에서는 커스텀 피스를 추가하는 방법을 살펴보겠습니다.
Reference
이 문제에 관하여(스키마 API로 Yoast SEO의 구조화된 데이터 커스터마이징 2부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/peterlidee/customizing-yoast-seos-structured-data-with-schema-api-part-2-591f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)