Avanzate
AvanzateTradurre tramite codice PHP

Tradurre tramite codice PHP

Puoi avviare le traduzioni tramite codice PHP all'interno della tua applicazione, tema o plugin.

La classe GatoStandalone\GatoAITranslationsForPolylang\Gato fornisce metodi statici per avviare le traduzioni:

MetodoDescrizione
translateAlias di translateCustomPosts
translateCustomPostsTradurre i custom post (pagine, articoli, tipi di post personalizzati)
translateTaxonomyTermsTradurre i termini di tassonomia (categorie, tag, tassonomie personalizzate)
translateMediaTradurre gli elementi multimediali (immagini, documenti, ecc.)

Firma del metodo

Questa è la firma del metodo per tutti i metodi di traduzione:

Solo il parametro ids è obbligatorio. Tutti gli altri parametri, se non forniti, verranno impostati utilizzando il valore delle Impostazioni del plugin.

Puoi trovare questa classe nel file src/Gato.php all'interno del plugin.

namespace GatoStandalone\GatoAITranslationsForPolylang;
 
class Gato
{
  /**
   * Alias of `translateCustomPosts`
   *
   * @param int|int[] $ids Array of custom post IDs to translate
   * @param string|null $statusToUpdate The status the custom posts must have to be updated
   * @param string|null $statusWhenTranslated The status the custom posts will have after translation. Possible values: "draft", "pending", "publish", "private", "current" (i.e. don't modify the status), "same-as-origin" (i.e. copy the status from the origin post)
   * @param array<string,string>|null $languageProviders Array of: Key => language code, Value: Provider name, "none" to disable for that language, or "default" to use the default provider
   * @return array<string|int>|false Array of custom post IDs that were processed for translation, or `false` if none of the provided IDs was valid
   * @throws PolylangNotActiveException
   * @throws LicenseNotActiveException
   * @throws PluginNotInitializedException
   */
  public static function translate(
    int|array $ids,
    ?string $statusToUpdate = null,
    ?string $statusWhenTranslated = null,
    ?bool $copyDate = null,
    ?bool $translateSlugs = null,
    ?array $languageProviders = null,
    ?string $defaultTranslationProvider = null,
  ): array|false;
 
  /**
   * Translate custom posts
   *
   * @param int|int[] $ids Array of custom post IDs to translate
   * @param string|null $statusToUpdate The status the custom posts must have to be updated
   * @param string|null $statusWhenTranslated The status the custom posts will have after translation. Possible values: "draft", "pending", "publish", "private", "current" (i.e. don't modify the status), "same-as-origin" (i.e. copy the status from the origin post)
   * @param array<string,string>|null $languageProviders Array of: Key => language code, Value: Provider name, "none" to disable for that language, or "default" to use the default provider
   * @return array<string|int>|false Array of custom post IDs that were processed for translation, or `false` if none of the provided IDs was valid
   * @throws PolylangNotActiveException
   * @throws LicenseNotActiveException
   * @throws PluginNotInitializedException
   */
  public static function translateCustomPosts(
    int|array $ids,
    ?string $statusToUpdate = null,
    ?string $statusWhenTranslated = null,
    ?bool $copyDate = null,
    ?bool $translateSlugs = null,
    ?array $languageProviders = null,
    ?string $defaultTranslationProvider = null,
  ): array|false;
 
  /**
   * Translate taxonomy terms (categories and tags)
   *
   * @param int|int[] $ids Array of taxonomy term IDs to translate
   * @param array<string,string>|null $languageProviders Array of: Key => language code, Value: Provider name, "none" to disable for that language, or "default" to use the default provider
   * @return array<string|int>|false Array of taxonomy term IDs that were processed for translation, or `false` if none of the provided IDs was valid
   * @throws PolylangNotActiveException
   * @throws LicenseNotActiveException
   * @throws PluginNotInitializedException
   */
  public static function translateTaxonomyTerms(
    int|array $ids,
    ?bool $translateSlugs = null,
    ?array $languageProviders = null,
    ?string $defaultTranslationProvider = null,
  ): array|false;
 
  /**
   * Translate media items
   *
   * @param int|int[] $ids Array of media item IDs to translate
   * @param array<string,string>|null $languageProviders Array of: Key => language code, Value: Provider name, "none" to disable for that language, or "default" to use the default provider
   * @return array<string|int>|false Array of media item IDs that were processed for translation, or `false` if none of the provided IDs was valid
   * @throws PolylangNotActiveException
   * @throws LicenseNotActiveException
   * @throws PluginNotInitializedException
   */
  public static function translateMedia(
    int|array $ids,
    ?bool $translateSlugs = null,
    ?array $languageProviders = null,
    ?string $defaultTranslationProvider = null,
  ): array|false;
}

Contesto di esecuzione

Esegui uno qualsiasi dei metodi solo dopo che il plugin è stato inizializzato. Ciò avviene su hook diversi, a seconda del contesto:

ContestoHook
FrontendAction hook 'wp'
AdminAction hook 'wp_loaded'
REST APIFilter hook 'rest_jsonp_enabled'

Esempi di esecuzione

Eseguire traduzioni dall'interno di ciascuno degli hook di WordPress:

use GatoStandalone\GatoAITranslationsForPolylang\Exception\AbstractGatoAITranslationsForPolylangException;
 
// Frontend
add_action('wp', function() {
  try {
    Gato::translateCustomPosts(123);
  } catch (AbstractGatoAITranslationsForPolylangException $e) {
    error_log($e->getMessage());
  }
});
 
// Admin
add_action('wp_loaded', function() {
  try {
    Gato::translateTaxonomyTerms([456, 789]);
  } catch (AbstractGatoAITranslationsForPolylangException $e) {
    error_log($e->getMessage());
  }
});
 
// REST API
add_filter('rest_jsonp_enabled', function(mixed $value): mixed {
  try {
    Gato::translateMedia([101, 102]);
  } catch (AbstractGatoAITranslationsForPolylangException $e) {
    error_log($e->getMessage());
  }
  return $value;
});

Se sei certo che:

  • Polylang è attivo
  • Disponi di una licenza valida per il plugin
  • Il plugin è stato inizializzato (cioè gli hook sopra indicati sono stati eseguiti)

…allora puoi eseguire le traduzioni senza controllare le eccezioni:

Gato::translate(123); // Same as `translateCustomPosts`
Gato::translateCustomPosts(123);
Gato::translateTaxonomyTerms([456, 789]);
Gato::translateMedia([101, 102]);