Kategoriler
WordPress

Yoast SEO eklentisi Schema – API örnekler

Yoast SEO WordPress eklentisinin Schema – API ile çeşitli denemeler, örnek kodlar.

Yoast SEO eklentisi şu an Dünyada tüm İnternetin en popüler ve çok kullanılan WordPress eklentisi, en yakın rakibine 6 kat fark aymış durumda(2). Hem çok akıllıca kodlanmış(oldukça detaylı incelediğim için biliyorum), hafif, performanslı ve hem de SEO noktasında WordPress’in tüm ihtiyaçlarını karşılıyor.

Burada Yoast SEO eklentisinin Schema – API’nı(1) kullanıp birkaç deneme yaptım ve çok işime yaradı, bunları örnek olarak paylaşıyorum.

Öncelikle çıktının okunaklı ve düzgün görünmesi için aşağıdakini kullanın, çalışmanız bittikten sonra bunu kaldırabilirsiniz:

// functions.php
add_filter('yoast_seo_development_mode', '__return_true');

Ayrıca şunu da kullanabilirsiniz: https://wordpress.org/plugins/yoast-test-helper/

Yoast SEO’s schema komple iptal etmek için:

// functions.php
add_filter('wpseo_json_ld_output', '__return_false');

Komple deaktif etme fonksiyonu çok işime yaradı çünkü bir sitede bazı sayfalarda Yoast’ın çalışmasını istemiyordum, elbette schema ve diğer metaları da iptal etmek mümkün diğer yazılarımda anlamış olmalıyım arayınca bulunur.

Schema içerisinde bir tipi(piece) kaldırmak isterseniz aşağıdaki örnekte Breadcrumb kaldırılır, örnekteki gibi diğerlerini de kaldırabilirsiniz.

// functions.php
add_filter('wpseo_schema_graph_pieces', 
add_filter('wpseo_schema_graph_pieces', function($pieces,$context){
return \array_filter($pieces, function($piece){
  return ! $piece instanceof \Yoast\WP\SEO\Generators\Schema\Breadcrumb;
});
},11,2);

/*
      $schema_pieces = [
        new Schema\Organization(),
        new Schema\Person(),
        new Schema\Website(),
        new Schema\Main_Image(),
        new Schema\WebPage(),
        new Schema\Breadcrumb(),
        new Schema\Article(),
        new Schema\Author(),
        new Schema\FAQ(),
        new Schema\HowTo(),
      ];
*/
//veya
add_filter('wpseo_schema_needs_person', '__return_false');
add_filter('wpseo_schema_needs_website', '__return_false');
add_filter('wpseo_schema_needs_mainimage', '__return_false');
add_filter('wpseo_schema_needs_webpage', '__return_false');
add_filter('wpseo_schema_needs_article', '__return_false');
add_filter('wpseo_schema_needs_author', '__return_false');
add_filter('wpseo_schema_needs_faq', '__return_false');
add_filter('wpseo_schema_needs_howto', '__return_false');

Yeni farklı bir şema tipi eklemek isterseniz:

// functions.php
add_filter('wpseo_schema_graph_pieces', 'add_custom_schema_piece',11,2);
function add_custom_schema_piece($pieces, $context){
   $this->context = $context;
   $pieces[] = new MyCustomSchemaPiece($context);
   return $pieces;
}

Ve karma ama incelediğinzide çözebileceğini schema içerisindeki verileri değiştirebileceğiniz örnek diğer kodlarım:

// functions.php
add_filter('wpseo_schema_organization', function ($data)
{
    $data['@id'] = 'https://wolkanca.com/#organization';
    $data['url'] = 'https://wolkanca.com/';
    $data['logo']['@id'] = 'https://wolkanca.com/#logo';
    $data['image']['@id'] = 'https://wolkanca.com/#logo';
    return $data;
});
add_filter('wpseo_schema_website', function ($data)
{
    $data['@id'] = 'https://wolkanca.com/#website';
    $data['url'] = 'https://wolkanca.com/';
    $data['publisher']['@id'] = 'https://wolkanca.com/#organization';
    $data['potentialAction'][0]['target'] = 'https://wolkanca.com/?s={search_term_string}';
    return $data;
});
add_filter('wpseo_schema_webpage', function ($data)
{
    $data['name'] = str_replace(" – WOLKANCA", "", $data['name']);
    $data['isPartOf']['@id'] = 'https://wolkanca.com/#website';
    return $data;
});
add_filter('wpseo_schema_breadcrumblist', function ($data)
{
    $data['itemListElement'][0]['item']['@id'] = 'https://wolkanca.com/';
    $data['itemListElement'][0]['item']['url'] = 'https://wolkanca.com/';
    $data['itemListElement'][0]['item']['name'] = 'WOLKANCA';
    return $data;
});
add_filter('wpseo_schema_article', function ($data)
{
    $data['author']['@id'] = str_replace("https://wolkanca.com/eski/", "https://wolkanca.com/", $data['author']['@id']);
    $data['publisher']['@id'] = 'https://wolkanca.com/#organization';
    return $data;
});
add_filter('wpseo_schema_person', function ($data)
{
    $data['@id'] = str_replace("https://wolkanca.com/eski/", "https://wolkanca.com/", $data['author']['@id']);
    $data['image']['@id'] = 'https://wolkanca.com/#personlogo';
    $data['image']['url'] = 'https://wolkanca.com/wp-content/uploads/2020/08/volkanyilmaz-profil.jpg';
    $data['image']['contentUrl'] = 'https://wolkanca.com/wp-content/uploads/2020/08/volkanyilmaz-profil.jpg';
    $data['url'] = 'https://wolkanca.com/hakkimda/';
    return $data;
});

Yukarıdaki kod parçacığını ben /eski altında çalışan eski blogum için kullandım, orada site_url() ve home_url() “https://wolkanca.com/eski” şeklinde olduğu için, Yoast’ın bu verileri options’dan aldığı için, ve aslında şema içerisinde “https://wolkanca.com” olarak görünmesi gerektiğini düşündüğüm için 🙂 çok uzun cümle oldu. Evet bu yüzden bu şekilde bir çalışma yaptım ve gayet başarılı bir şekilde çalıştı.

Kolay gelsin, Twitter’dan takip etmeyi unutmayın!

Kaynaklar:

  1. Schema – API documentation: developer.yoast.com/features/schema/api/
  2. WordPress Plugins Usage Distribution on the Entire Internet: trends.builtwith.com/widgets/wordpress-plugins/traffic/Entire-Internet