Documentation / Développeurs
Les hooks que SwiftLing met à la disposition des autres extensions et des thèmes. SwiftLing Pro repose uniquement sur eux : il ne modifie rien à SwiftLing lui-même.
SWIFTLING_HOOKS indique la version de cette liste. Sa valeur augmente lorsqu’un hook est ajouté ou modifié, ce qui permet à une extension de vérifier que SwiftLing dispose de ce dont elle a besoin :
if ( ! defined( 'SWIFTLING_HOOKS' ) || SWIFTLING_HOOKS < 1 ) {
return; // Too old a SwiftLing.
}
tests/HooksTest.php échoue si un hook est ajouté à SwiftLing sans être décrit ici, ou s’il est décrit ici sans exister dans SwiftLing.
Écrans d’administration
swiftling_admin_screens
Filtre, depuis la version 1 des hooks. Les écrans d’administration de SwiftLing, indexés par le slug de leur adresse (admin.php?page=<slug>), dans l’ordre du menu. Une extension peut ajouter un écran au menu ou à un groupe ; voir swiftling_admin_groups.
| Key | |
|---|---|
menu | Name: the screen’s title, its menu item, and its name in the list of its group. Required. |
view | A name for the screen, unique among the screens. Required. |
file | Path of the PHP file that prints the screen. Without it, admin/views/<view>.php of SwiftLing. |
group | A group of swiftling_admin_groups: the screen is out of the menu, unless it is the group’s first, and shows the group’s header and list. |
part | The part of the group’s list the screen is listed in. Without it, the screen is in the group but not listed. |
icon, tint | The screen’s picture in the list: the path of a 16 by 16 line drawing, on a tile of orange, blue, green, teal, amber, violet or ink. |
hidden | Reachable only by link, never in the menu. |
count | Since hooks 25: a number to show beside the screen’s menu item, as WordPress shows pending comments, such as replies waiting to be read. A screen of a group adds it to the group’s item; SwiftLing’s own item shows the sum of all, so it is seen with the menu closed. 0 shows nothing. |
cap | Since hooks 12: the capability the screen takes; without it, manage_options. The Translations screens and the translation editor take swiftling_translate, see swiftling_can_translate. The menu and the list of a group show a user only the screens they may open. |
before_setup | Since hooks 20: the screen opens before the first setup is answered, as an import that sets the languages up from another plugin’s (swiftling_import_languages()). Until then every other screen leads to the first setup. |
Le fichier affiche l’écran dans la page de SwiftLing, avec ses styles. Il commence par SwiftLing\Admin\Ui::screenHeader(), comme les vues de SwiftLing. Un écran sans nom ou sans vue, ou dont le fichier est illisible, est ignoré ; un écran rattaché à un groupe qui n’existe pas dans SwiftLing devient un écran indépendant.
add_filter(
'swiftling_admin_screens',
static function ( array $screens ): array {
$screens['swiftling-glossary'] = array(
'menu' => __( 'Glossary', 'my-plugin' ),
'view' => 'glossary',
'file' => __DIR__ . '/views/glossary.php',
'group' => 'settings',
'part' => 'swiftling',
'icon' => 'M2 4h12M2 8h12M2 12h8',
'tint' => 'violet',
);
return $screens;
}
);
swiftling_admin_groups
Filtre, depuis la version 1 des hooks. Les groupes d’écrans, indexés par identifiant : translations et settings. Un groupe constitue une seule entrée de menu portant son nom, qui ouvre son premier écran ; chacun de ses écrans affiche l’en-tête du groupe (name, description) et la liste de ses écrans répartis en sections (parts, avec les noms indexés par section). Une extension peut ajouter un groupe ou des sections à un groupe.
add_filter(
'swiftling_admin_groups',
static function ( array $groups ): array {
$groups['settings']['parts']['automatic'] = __( 'Automatic', 'my-plugin' );
return $groups;
}
);
swiftling_setup_offer
Action, depuis la version 24 des hooks. Se déclenche au-dessus de la question de la configuration initiale sur la langue dans laquelle le site est rédigé, destinée à la personne qui gère le site. Une autre extension peut y proposer une méthode de configuration de SwiftLing mieux adaptée au site, comme l’importation, par SwiftLing Pro, des traductions d’une extension multilingue utilisée auparavant, sur un écran qui s’ouvre avant la configuration (before_setup ci-dessus). Si l’action affiche quelque chose, cet élément apparaît en premier et devient le titre principal de la page (<h1>) ; la question suit sous « ou configurez SwiftLing manuellement », avec un titre de niveau inférieur et un bouton secondaire. Si elle n’affiche rien, la configuration reste inchangée.
add_action(
'swiftling_setup_offer',
static function (): void {
if ( my_plugin_has_old_translations() ) {
printf( '<section class="swiftling-card"><h1>%s</h1><p><a class="swiftling-button is-primary" href="%s">%s</a></p></section>', esc_html__( 'Bring your translations along', 'my-plugin' ), esc_url( admin_url( 'admin.php?page=my-import' ) ), esc_html__( 'Import', 'my-plugin' ) );
}
}
);
swiftling_setup_aside
Action, depuis la version 20 des hooks. Se déclenche sous la première étape de configuration, qui demande à la personne gérant le site dans quelle langue celui-ci est rédigé. Une autre extension peut proposer une autre façon de configurer les langues, sur un écran qui s’ouvre avant la configuration (before_setup ci-dessus). Pour une proposition qui doit apparaître en premier, voir swiftling_setup_offer.
add_action(
'swiftling_setup_aside',
static function (): void {
printf( '<p><a href="%s">%s</a></p>', esc_url( admin_url( 'admin.php?page=my-import' ) ), esc_html__( 'Import from my old plugin', 'my-plugin' ) );
}
);
swiftling_admin_screen_assets
Action, depuis la version 1 des hooks. Se déclenche lorsqu’un écran de SwiftLing charge ses scripts et ses styles, après ceux de SwiftLing. La feuille de style de SwiftLing est chargée sur chacun de ses écrans, y compris ceux d’autres extensions.
string $slug: slug de l’adresse de l’écran, par exempleswiftling-languages.array $screen: l’écran, tel que le fournitswiftling_admin_screens.
add_action(
'swiftling_admin_screen_assets',
static function ( string $slug ): void {
if ( 'swiftling-glossary' === $slug ) {
wp_enqueue_script( 'my-glossary', plugins_url( 'glossary.js', __FILE__ ), array(), '1.0.0', true );
}
}
);
Traduction
swiftling_can_translate
Filtre, depuis la version 12 des hooks. Détermine si une personne qui ne gère pas le site peut traduire. La traduction correspond à la capacité swiftling_translate : elle est accordée à toute personne disposant de manage_options, ainsi qu’aux personnes désignées par ce filtre. Une capacité enregistrée pour un rôle, par exemple au moyen d’un éditeur de rôles, ne suffit pas. SwiftLing Pro l’accorde à son rôle de traducteur ainsi qu’aux rôles sélectionnés à cet effet.
Une personne chargée de traduire qui ne gère pas le site peut ouvrir les écrans Traductions et l’éditeur de traduction, et traduire tous les textes, dans toutes les langues, y compris ceux d’éléments qu’elle ne peut pas modifier, comme un modèle, un formulaire ou les textes d’un thème (swiftling_is_translator()). Les réglages restent réservés à la personne qui gère le site : langues, adresses, sélecteur, service, réglages généraux, journaux, Traduire tout, ainsi que les choix des écrans Traductions qui constituent des réglages, tels que les champs des termes considérés comme du texte, les langues dans lesquelles les éléments de menu s’affichent et la recherche des textes des thèmes et des extensions.
bool $can: indique si l’utilisateur peut traduire ; faux, sauf si une autre extension l’autorise.WP_User $user: l’utilisateur.
swiftling_translator_machine
Filtre, depuis la version 13 des hooks. Détermine si un traducteur qui ne gère pas le site peut utiliser le service de traduction du site, dont le coût est à la charge du responsable (swiftling_can_machine_translate()). Si l’accès est refusé, la route de traduction automatique renvoie une erreur 403 et l’éditeur de traduction ne propose pas de traduction automatique, comme en l’absence de service. Toute personne qui gère le site y a toujours accès. SwiftLing Pro utilise ce filtre dans Réglages › Traducteurs.
bool $can: vrai, sauf si une extension s’y oppose.WP_User $user: le traducteur.
swiftling_translation_services
Filtre. Les services de traduction automatique, indexés par identifiant. Une extension peut ajouter son propre service, une sous-classe de SwiftLing\Translation\Service ; l’écran Service de traduction l’affiche parmi les autres.
array<string, Service> $services
Un service étend SwiftLing\Translation\Service, comme le fait SwiftLing\Translation\Google :
| Method | |
|---|---|
id(), name(), fullName() | deepl; DeepL, as in « Translate with DeepL »; DeepL API. The ID names its settings and the constant that can hold its key, SWIFTLING_DEEPL_API_KEY. |
check( $key ) | Checks a key with the service: array( 'languages' => codes ), or a WP_Error whose message says what to do. Since hooks 5, a service with models to choose from adds 'models' => array( ID => name ), the models the key may use. Since hooks 6, an error whose data has 'reason' => 'billing' is a key that works on an account that cannot pay (no credits, billing off, a spend limit reached): the screen says so as a warning, and the service does not translate until a check passes. |
languageCode( $language ) | The service’s code for a language of swiftling_languages(), or null when it does not translate it. |
translate( $items, $source, $target ) | Translates texts: see the method’s description. Since hooks 5, a language model adds tokens to its answer, the tokens it read and wrote, counted by month beside the characters (Services::tokens()). |
freeCharacters(), pricingUrl() | Optional: characters translated free of charge each month, and the address of its prices. |
quota() | Optional, since hooks 4: the usage of the billing period as the service counts it, array( 'used' => …, 'limit' => … ) (0 for a plan without a limit). The screen shows it instead of freeCharacters(). |
guide() | Optional, since hooks 2: how to get a key, shown on the Translation service screen while the service is not connected. |
defaultModel() | Optional, since hooks 5: the model the service translates with until another is chosen. The Translation service screen offers the models of the last check in a list; model() gives the one chosen, the default, or the first. |
sourceLanguage(), targetLanguage() | Since hooks 9: the languages of the translation under way, as swiftling_languages() gives them, told by setLanguages() before every translate(). A service heeds more than its codes with them: the formal variant of a locale (de_DE_formal is DE to DeepL), or what is set for the language. |
kind() | Optional, since hooks 3: machine (the default), a translation engine billed per character, or ai, a language model billed per token. The Translation service screen lists services in a card per kind, each with SwiftLing’s icon of its kind, never a logo of the service. |
Les clés saisies sur l’écran Service de traduction conservent les lettres, les chiffres, -, _, : et .. Lorsque plusieurs services sont connectés, celui qui est sélectionné sur cet écran effectue les traductions (Services::current(), depuis la version 2 des hooks).
SwiftLing\Translation\Markup (depuis la version 2 des hooks) fournit à chaque service ce dont Google a besoin pour traiter le HTML : protect() et restore() préservent les attributs des balises du site ; keep() et unkeep() préservent les espaces réservés, les variables des extensions SEO (swiftling_seo_variables()) et les mots à ne jamais traduire dans <span translate="no"> ; plainToHtml() et htmlToPlain() permettent de transmettre du texte brut sous forme de HTML.
swiftling_translation_service
Filtre. Le service qui traduit une page, un modèle ou une liste de termes dans une langue donnée, afin qu’une extension puisse utiliser des services différents selon les langues ou les pages.
Service|null $service: le service connecté, ou null si aucun service n’est connecté.string $subject: la clé de l’élément traduit, par exemplepost:12.array $language: la langue, telle que la fournitswiftling_languages().
Vérifier une page côté serveur
Depuis la version 14 des hooks, swiftling_server_check( $key, $user_id = null ) vérifie côté serveur la page d’un sujet (post:12, template:…, terms:category, voir swiftling_subject()), comme le fait l’éditeur de traduction dans le navigateur, et enregistre les résultats. Cela permet de traduire sans navigateur, en arrière-plan, lors de la publication, via l’API REST ou WP-CLI. Le site récupère lui-même les deux pages nécessaires à la vérification au moyen d’une requête en boucle, comme le fait Santé du site, avec un jeton signé valable quelques minutes pour le sujet et la page concernés. Les pages sont générées pour l’utilisateur indiqué (l’utilisateur actuel par défaut), qui doit avoir le droit de traduire le sujet. La fonction renvoie les données enregistrées ou un WP_Error. Les scripts ne s’exécutent pas : un texte créé par un script après le chargement de la page ne peut être trouvé que par la vérification dans le navigateur.
Traduire sans l’éditeur
Depuis la version 15 des hooks, includes/api.php exécute côté serveur les étapes de l’éditeur de traduction et de « Tout traduire », en tant qu’utilisateur actuel, avec les mêmes droits et vérifications ; les routes propres à l’éditeur appellent les mêmes fonctions. Chaque fonction renvoie un WP_Error (avec un status pour une réponse REST) si le sujet, la langue ou les droits de l’utilisateur ne conviennent pas.
| Function | |
|---|---|
swiftling_subject_texts( $key, $lang ) | The texts of a subject (post:12, template:…, view:…, terms:category, menu:3, a builder’s subject) the user may translate, with their translations into a language: key, object, path, section, kind, type (text, html, code, url, or format for a text from code), original, translation, state (reviewed, machine, official, outdated, missing), previous and follows. The originals are never stored, so the page is checked on the server first (swiftling_server_check()). |
swiftling_save_texts( $key, $lang, $items, $state ) | Saves translations by key, as the editor saves what is typed: $items is a list of key, text and, for the check of placeholders, original; $state is reviewed or machine. An empty text removes a translation. Returns the states of what was saved, the keys refused for their placeholders and those ignored, the subject’s state in every language (languages), and a post’s address in the language. |
swiftling_save_earlier_texts( $key, $lang, $items ) | Since hooks 22, for an import: saves translations made for an earlier version of their originals, as another plugin kept them ($items: key of the text’s place now, text, and the earlier original it translated). Each text is outdated then, as when its original changed after it was translated here: visitors read the original, the editor shows the earlier translation, Translate everything leaves it to the editor, and the page counts as translated once its other texts are. A text translated now, one whose earlier version is the text now, and one another language waits with in another earlier version (a text has one previous version for all languages) are ignored; returns the keys saved too. The subject’s page must have been checked. |
swiftling_save_address( $owner, $lang, $slug ) | Saves the slug of a post (post:12) or of a term with a page of its own (term:5) in a language, as the editor saves a typed one: empty for the original slug, a number added to one taken there. Returns the address it gives: slug, state, original, prefix, url. |
swiftling_machine_translate( $key, $lang, $items ) | Translates texts (key, text, html) with the subject’s translation service, through swiftling_machine_items and swiftling_machine_translations, at most 100 texts and 20,000 characters at once; it does not save them. Returns translations, failed, kept and error. |
swiftling_machine_translate_subject( $key, $lang, $again = array() ) | Fills the empty texts of a subject with the service and saves them as machine translations, in batches of 50 texts and 4,000 characters, as the Translate everything run fills a page; with states in $again (machine, reviewed), translates the texts in those states again instead. Returns how many texts there were, how many were translated, their characters, the keys failed and refused, the service’s error if it stopped, and own_page when the language shows a separate copy of the post or keeps its original (the stored mode duplicate), where nothing is filled in. |
Depuis la version 19 des hooks, swiftling_import_languages( $source, $targets, $address ) définit les langues du site à partir de celles d’une autre extension, lors d’une importation : la langue d’origine (locale, slug) telle que définie lors de la configuration initiale, ou celle déjà utilisée par SwiftLing (sinon swiftling_import_source) ; les langues cibles (locale, slug, visible, ainsi que name et rtl pour une locale absente de la liste de WordPress, qui devient alors une langue personnalisée) sont ajoutées par locale, tandis que celles déjà présentes sur le site sont conservées ; et $address comprend format (parameter, directory ; domain et subdomain conservent leurs domains, mais attendent la configuration sur l’écran Adresses) et source_folder. La fonction renvoie les locales added et kept, les slugs, indique si le format attend la configuration des hosts, ainsi que les traductions de WordPress installées et manquantes (packs). Depuis la version 20 des hooks, elle fonctionne aussi depuis l’API REST, WP-CLI et WP-Cron, et plus seulement sur les écrans d’administration. Depuis la version 21 des hooks, un name fourni pour une locale à laquelle WordPress donne un autre nom, comme « English » pour en_GB (« English (UK) »), devient le nom affiché dans le sélecteur de langue et son libellé sur l’écran Langues.
Les commentaires et les textes d’un thème ou d’une extension figurent dans des listes paginées sur leurs propres écrans : leurs textes sont enregistrés et traduits par clé, mais ne sont ni affichés ni renseignés ici. Depuis la version 23 des hooks, swiftling_subject_found( $subject, array( 'page' => 1 ) ) fournit une page de la liste des commentaires (comments:<post type>) telle qu’elle apparaît dans l’éditeur de commentaires, avec tous les commentaires, du plus récent au plus ancien, et les informations de pagination dans list (ses page et pages ; lang indique la langue concernée par les décomptes). Leurs traductions peuvent ainsi être enregistrées par clé avec swiftling_save_texts().
swiftling_machine_items
Filtre, depuis la version 9 des hooks. Les textes de l’éditeur envoyés au service de traduction, auxquels une extension peut ajouter des éléments : des parties à conserver (keep), comme les termes définis par un glossaire pour un service qui ne prend pas les glossaires en charge, ou des clés lues par son propre service. SwiftLing conserve les textes, leur caractère HTML et ses propres parties à conserver tels quels, et n’envoie que les textes de la page.
array<string, array> $items: clé =>text,html,keep; voirService::translate().Service $service: le service qui les traduit.array $language: la langue dans laquelle ils sont traduits, telle que renvoyée parswiftling_languages().
swiftling_machine_translations
Filtre, depuis la version 9 des hooks. Les traductions renvoyées par le service, avant que SwiftLing ne vérifie leurs espaces réservés et les variables des extensions SEO, et que l’éditeur ne les renseigne. Une extension peut ainsi les modifier, par exemple pour insérer les termes définis par un glossaire aux emplacements où ils avaient été conservés. Seuls les textes traduits sont concernés, chacun restant un texte.
array<string, string> $translations: clé => traduction.array<string, array> $items: les éléments envoyés ; voirswiftling_machine_items.Service $servicearray $language
swiftling_translated_changed
Action. Se déclenche une fois que les langues dans lesquelles certains articles sont traduits ont été réécrites.
int[] $post_ids
swiftling_translate_all_modes
Filtre, depuis la version 7 des hooks. Les modes de fonctionnement de l’écran Tout traduire, indexés par mode et affichés sous forme de cartes : fill, le mode propre à SwiftLing, remplit les textes vides. Une extension ajoute un mode avec label (le nom de la carte), description (la ligne sous le titre de l’écran), hint (ce qu’il fait, sur la carte), icon et tint (son illustration, comme pour un écran dans swiftling_admin_screens), et file (le fichier PHP qui affiche son écran sous les cartes, à l’adresse admin.php?page=swiftling-translate-all&mode=<mode>). Quand SwiftLing est seul, il n’y a qu’un mode et aucune carte n’est affichée. Ses scripts sont chargés par swiftling_admin_screen_assets sur swiftling-translate-all ; la vérification de la page (window.swiftlingPageCheck) et la traduction automatique partagée (window.swiftlingMachine) y sont disponibles.
Une exécution qui retraduit des textes interroge la route de sondage avec fill et, pour again, machine, reviewed ou les deux. Celle-ci renvoie alors les textes traduits dans ces états, chacun avec son state, au lieu des textes vides ; jamais un texte provenant de WordPress, d’un thème ou d’une extension, ni un texte dont l’original a changé. swiftling_translate_all_scan() les compte par page et par langue dans translated (machine, reviewed ; null pour une page jamais vérifiée).
swiftling_translate_all_aside
Action, depuis la version 17 des hooks. Se déclenche en haut de la colonne latérale de Tout traduire, au-dessus de Comment ça marche, une fois qu’un service de traduction est connecté. Une extension peut y afficher sa propre carte sur la traduction de l’ensemble du site (<section class="swiftling-card swiftling-side">), comme SwiftLing Pro pour indiquer que les pages peuvent être traduites dès leur publication. La version 16 des hooks utilisait à la place swiftling_translate_all_notices sous le titre de l’écran ; ce hook a été supprimé.
swiftling_translate_all_start_actions
Action, depuis la version 18 des hooks. Se déclenche à l’étape Démarrer de Tout traduire, à côté du bouton qui lance l’exécution dans l’onglet. Une extension peut y ajouter une autre façon de la lancer, comme le fait SwiftLing Pro sur le serveur.
string $lang: la langue affichée en premier dans les étapes, ou""si aucune action n’est possible.
Une exécution pilotée par le serveur
Depuis la version 18 des hooks, swiftling_translate_all_record( $lang, $args ) enregistre ce qu’une exécution de Tout traduire a fait avec une page, ou qu’une langue est terminée, comme le fait la route de progression pour l’exécution dans le navigateur, et renvoie l’état de l’exécution (swiftling_translate_all_state()). $args : page (post:12), outcome (done ou skipped), reason, texts, characters, total, finish, stopped et driver (browser ou server). Une extension qui pilote une exécution sur le serveur la planifie avec swiftling_translate_all_plan( $lang ), traduit chaque page avec swiftling_machine_translate_subject() et l’enregistre avec driver défini sur server.
Une langue ne peut être pilotée que par un seul acteur à la fois : celui qui enregistre l’exécution la pilote jusqu’à son arrêt (stopped), sa fin ou trois minutes d’inactivité (navigateur), ou cinq (serveur). Pendant ce temps, l’autre reçoit l’erreur swiftling_translate_all_busy (409). Le champ driver de l’état indique qui pilote actuellement l’exécution ; la vignette d’une langue pilotée par le serveur le signale et ne peut pas être sélectionnée.
swiftling_editor_actions
Action, depuis la version 7 des hooks. Se déclenche dans l’en-tête de l’éditeur de traduction, après les outils qui remplissent les champs vides, afin qu’une extension puisse afficher les siens.
array $subject: l’élément traduit ; voirswiftling_subject().array $language: la langue affichée, telle que renvoyée parswiftling_languages().Service|null $service: le service qui effectue la traduction, ou null.
Son script, chargé via swiftling_admin_screen_assets sur swiftling-translation après swiftling-editor, interagit avec les champs au moyen de window.swiftlingEditor, une fois que ready vaut true ou que l’événement swiftling:editor-ready a été déclenché sur document :
texts( states ) | The text fields translated in those states (machine, reviewed): key, state, characters of the original. Never one from WordPress, a theme or a plugin, one whose original changed, or one with changes not saved. |
translateAgain( states ) | Translates those fields again with the service in use and saves them as machine translations, as « Translate empty fields » does: a promise of translated, failed and stopped (why the service stopped, or empty). |
service | The name of the service in use, or empty. |
dirty() | How many fields have changes not saved. |
Langues
Depuis la version 10 des hooks, swiftling_switch_translation( $slug ) permet de passer temporairement à une langue de traduction hors de la page consultée par le visiteur, par exemple pour rédiger un e-mail destiné à un client depuis l’administration ou au moyen d’une tâche planifiée. Les valeurs enregistrées, les textes issus du code et les liens sont alors lus dans cette langue, et WordPress utilise ses paramètres régionaux, jusqu’à l’appel de swiftling_resume_translation(). swiftling_pause_translation() fait de même pour la langue d’origine. Ces appels peuvent s’imbriquer ; chacun doit être suivi d’un appel correspondant pour rétablir la langue précédente. Un slug qui ne correspond à aucune langue du site désigne la langue d’origine. C’est ainsi que SwiftLing Pro rédige les e-mails WooCommerce destinés à un client dans la langue de sa commande.
swiftling_language_forgotten
Action. Se déclenche après la suppression, depuis l’écran Langues, des données conservées pour une langue qui ne figure plus sur le site, afin qu’une extension puisse également supprimer les données qu’elle conserve pour cette langue.
string $locale: paramètres régionaux de la langue.array $done: éléments supprimés,textsetcopies.
swiftling_starting_over
Action, disponible depuis la version 11 des hooks. Se déclenche lorsque SwiftLing commence à repartir de zéro depuis Réglages › Général, avant toute suppression. Une extension fondée sur SwiftLing peut ainsi supprimer ses propres données tout en ayant encore accès à celles que SwiftLing supprimera ensuite, comme la clé d’un service de traduction. Avec everything, SwiftLing supprime ensuite toutes les options et données transitoires dont le nom contient swiftling_, y compris celles d’une extension comme SwiftLing Pro. La suppression de SwiftLing ne supprime aucune donnée : repartir de zéro est le seul moyen de les effacer.
string $scope:everything, oukeeplorsque les traductions sont conservées.
swiftling_started_over
Action. Se déclenche après que SwiftLing a été remis à zéro depuis Réglages › Général.
string $scope:everything, oukeeplorsque les traductions ont été conservées.
swiftling_start_over_removed
Filtre, disponible depuis la version 11 des hooks. Permet d’ajouter des lignes à la liste des éléments supprimés lors de la remise à zéro, dans Réglages › Général, afin que l’utilisateur sache également ce que supprime une extension fondée sur SwiftLing.
string[] $removed: lignes de texte brut.
swiftling_language_switcher
Action destinée aux thèmes. Affiche le sélecteur de langue ; n’affiche rien si SwiftLing n’est pas actif.
array $args: arguments facultatifs, comme pourswiftling_language_switcher():style(dropdown,horizontal,vertical),flag,name,code,current,class.
<?php do_action( 'swiftling_language_switcher', array( 'style' => 'horizontal' ) ); ?>
swiftling_switcher_html
Filtre, disponible depuis la version 8 des hooks. Permet de modifier le HTML d’un sélecteur de langue partout où il est affiché (menu, pied de page, bloc, code court, widget, swiftling_language_switcher), afin qu’une extension puisse y ajouter du contenu. SwiftLing Pro y ajoute son sélecteur de devise. Ce filtre n’est pas appelé lorsqu’aucune autre langue n’est disponible.
string $html: le sélecteur, un élémentdiv.swiftling-switcher.array $args: ses options :style(dropdown,horizontal,vertical),flag,name,code,current,class,flag_size.
Pages
swiftling_hreflangs
Filtre. Les adresses des versions linguistiques de la page affichée, publiées sous forme de liens hreflang.
array<string, string> $links: balise de langue oux-default=> adresse.array $page: l’adresse de la page dans la langue d’origine, sans indication de langue (url), l’article dont les traductions déterminent les langues de la page (post, 0 pour la page d’accueil des articles et les archives), et ce qui compose son adresse (build).
swiftling_search_limit
Filtre. Nombre maximal d’articles qu’une recherche extrait de l’index des traductions.
int $limitWP_Query $query
Caches
swiftling_purge_all
Action. Se déclenche une fois à la fin d’une requête après laquelle toutes les pages peuvent ne plus être à jour, afin que les caches de pages soient entièrement vidés.
swiftling_purge_urls
Action. Se déclenche une fois à la fin d’une requête après laquelle certaines pages ne sont plus à jour, afin qu’elles soient supprimées des caches de pages.
string[] $urls: adresses, dans toutes les langues où elles ne sont plus à jour.int[] $post_ids: articles auxquels appartiennent les adresses, pour les caches qui se vident par article.
Journaux et assistance
swiftling_log_areas
Filtre. Les sections de l’écran des journaux, avec leurs noms indexés par section, pour qu’une extension puisse nommer la sienne et écrire dans le même journal avec swiftling_log( $level, $area, $message, $args ).
array<string, string> $areas
swiftling_request_url
Filtre. Adresse à laquelle sont envoyées les demandes d’assistance concernant une extension, un thème ou un formulaire ; voir includes/requests.php.
string $url