Eklentiyi yapılandırma
Eklentiyi yapılandırmaBloklar için Özel Dahili Endpoint Oluşturma

Bloklar için Özel Dahili Endpoint Oluşturma

blockEditor dahili endpoint'i ile benzer şekilde, geliştiriciler kendi önceden tanımlanmış dahili endpointlerini de oluşturabilir (uygulamalarına veya bloklarına veri beslemek için), böylece belirli bir yapılandırma uygulayabilirler:

  • İç içe mutations kullanmak ya da kullanmamak
  • Ad alanı (namespacing) kullanmak ya da kullanmamak
  • Sorgulanabilecek CPT'leri önceden tanımlamak
  • Schema Configuration içinde mevcut olan diğer tüm yapılandırmalar

Aşağıdaki PHP kodu, Root.customPosts alanını ("Custom Posts" modülünden) yalnızca MyPortfolio CPT'sine erişecek şekilde yapılandıran accessMyPortfolioData adlı özel bir dahili endpoint tanımlar:

<?php
 
declare(strict_types=1);
 
use GatoGraphQL\GatoGraphQL\PluginSkeleton\ExtensionHooks\AbstractAddCustomAdminEndpointHook;
use PoP\Root\Module\ModuleInterface;
use PoPCMSSchema\CustomPosts\Environment as CustomPostsEnvironment;
use PoPCMSSchema\CustomPosts\Module as CustomPostsModule;
 
class MyPortfolioCustomAdminEndpointHook extends AbstractAddCustomAdminEndpointHook
{
  protected function getAdminEndpointGroup(): string
  {
    return 'accessMyPortfolioData';
  }
 
  /**
   * Allow querying a specific CPT
   *
   * @param array<class-string<ModuleInterface>,array<string,mixed>> $moduleClassConfiguration [key]: Module class, [value]: Configuration
   * @return array<class-string<ModuleInterface>,array<string,mixed>> [key]: Module class, [value]: Configuration
   */
  protected function doGetPredefinedAdminEndpointModuleClassConfiguration(
    array $moduleClassConfiguration,
  ): array {
    $moduleClassConfiguration[CustomPostsModule::class][CustomPostsEnvironment::QUERYABLE_CUSTOMPOST_TYPES] = ['MyPortfolio'];
    return $moduleClassConfiguration;
  }
 
  /**
   * Do not disable any schema modules
   *
   * @param array<class-string<ModuleInterface>> $schemaModuleClassesToSkip List of `Module` class which must not initialize their Schema services
   * @return array<class-string<ModuleInterface>> List of `Module` class which must not initialize their Schema services
   */
  protected function doGetSchemaModuleClassesToSkip(
    array $schemaModuleClassesToSkip,
  ): array {
    return [];
  }
}

plugins_loaded hook'u üzerinde başlatılması gerekir:

add_action('plugins_loaded', function () {
  // Validate Gato GraphQL is installed, or exit
  if (!class_exists(\GatoGraphQL\GatoGraphQL\Plugin::class)) {
    return;
  }
 
  new MyPortfolioCustomAdminEndpointHook();
});

Son olarak, endpoint'e endpoint_group parametresi seçilen adla değiştirilerek erişilir:

https://yoursite.com/wp-admin/edit.php?page=gatographql&action=run_query&endpoint_group=accessMyPortfolioData