This GraphQL query helps create a Multilingual site where every site is the translation for some language. The content is based on the WordPress block editor, and it is most suitable with a WordPress multisite network .
The query must be executed on the master site (with source content), which must have the PRO plugin. All other sites in the network can have the free Gato GraphQL plugin.
An Application Password is used to connect to the network sites. Make sure to provide the $username
and $appPassword
variables for a user with access to all sites.
The query retrieves the language from the main site and from the external site, and compares them:
Then it grabs the pages from the master site, and (if required) translates them all at once to the destination site's language, by executing a single call to the Google Translate API.
Finally it creates all those pages in the external site.
########################################################################
#
# Variables:
# - $username: The username to log into the external site
# - $appPassword: The application password to log into the external site
# - $externalSiteURL: The URL of the external site, where all pages will be (translated and) created
# - (Optional) $pageIDs: Restrict translating/creating the pages with given IDs
# - (Optional) $pageStatus: Fetch pages with given status
# - (Optional) $externalSiteGraphQLEndpointPath: Path to the GraphQL endpoint on the external site
#
# *********************************************************************
#
# === Description ===
#
# This Persisted GraphQL query helps create a Multilingual site
# where every site is the translation for some language. The content
# is based on the Gutenberg editor, and it is most suitable with a
# WordPress multisite network.
#
# It must be executed on the master site, which must have the PRO plugin.
# All other sites in the network can have the free Gato GraphQL plugin.
#
# The query retrieves the language from the main site and from the external
# site, and compares them:
#
# - If they are the same, simply replicate all pages
# - If they are different, replicate all pages with translated content
#
# (This way, if the main site has "en" language, and another site in
# the network also has "en", all pages are still replicated.)
#
# Then it grabs all the pages from the master site, and (if required) it
# translates them all at once (in bulk) to the destination site's language,
# by executing a single call to the Google Translate API.
#
# Finally it creates all those pages in the external site.
#
########################################################################
query InitializeVariables
@configureWarningsOnExportingDuplicateVariable ( enabled : false )
{
isGutenbergEditorEnabled
@export ( as : "isGutenbergEditorEnabled" )
emptyBool : _echo ( value : false )
@export ( as : "hasMasterPages" )
@export ( as : "executeTranslation" )
@remove
}
query ExportData (
$username : String!
$appPassword : String!
$externalSiteURL : URL!
$externalSiteGraphQLEndpointPath : String! = "/graphql/internal/"
$pageIDs : [ID!]! = []
$pageStatus : [CustomPostStatusEnum!]! = [ publish ]
)
@depends ( on : "InitializeVariables" )
@include ( if : $isGutenbergEditorEnabled )
{
# Retrieve the language of the content
siteLanguage
@export ( as : "fromLanguage" )
# Generate the authorization header to connect to the external site
loginCredentials : _sprintf (
string : "%s:%s" ,
values : [ $username , $appPassword ]
)
@remove
base64EncodedLoginCredentials : _strBase64Encode (
string : $__loginCredentials
)
@remove
authorizationHeaderValue : _sprintf (
string : "Basic %s" ,
values : [ $__base64EncodedLoginCredentials ]
)
@remove
@export ( as : "authorizationHeaderValue" )
# Generate the external site's GraphQL endpoint to connect to
endpoint : _sprintf (
string : "%s%s" ,
values : [
$externalSiteURL ,
$externalSiteGraphQLEndpointPath
]
)
@export ( as : "endpoint" )
masterPages : pages ( filter : { ids : $pageIDs , status : $pageStatus }) {
id
emptyArray : _echo ( value : [])
@export (
as : "rawTitle"
type : DICTIONARY
)
@export (
as : "rawContent"
type : DICTIONARY
)
@export (
as : "rawExcerpt"
type : DICTIONARY
)
@remove
}
hasMasterPages : _notEmpty ( value : $__masterPages )
@export ( as : "hasMasterPages" )
}
query RetrieveAndExportExternalSiteLanguage
@depends ( on : "ExportData" )
@include ( if : $hasMasterPages )
{
# Retrieve the language of the external site
externalHTTPRequest : _sendGraphQLHTTPRequest ( input :{
endpoint : $endpoint ,
query : "" "
{
me {
name
}
siteLanguage
}
""" ,
options : {
headers : [
{
name : "Authorization" ,
value : $authorizationHeaderValue
}
]
}
})
externalSiteLanguage : _objectProperty (
object : $__externalHTTPRequest ,
by : {
path : "data.siteLanguage"
}
)
@export ( as : "toLanguage" )
# Indicate if connecting to the external site was successful
hasRetrievedExternalSiteLanguage : _notEmpty (
value : $__externalSiteLanguage
)
# Only translate the content if the master/destination sites languages are different
areFromToLanguagesDifferent : _notEquals (
value1 : $fromLanguage
value2 : $__externalSiteLanguage
)
# Flag to indicate if to translate the content
executeTranslation : _and (
values : [
$__hasRetrievedExternalSiteLanguage ,
$__areFromToLanguagesDifferent ,
]
)
@export ( as : "executeTranslation" )
}
query InitializeBlockVariables (
$pageIDs : [ID!]! = []
$pageStatus : [CustomPostStatusEnum!]! = [ publish ]
)
@depends ( on : "RetrieveAndExportExternalSiteLanguage" )
@include ( if : $hasMasterPages )
{
emptyTranslationPageVars : pages ( filter : { ids : $pageIDs , status : $pageStatus }) {
id
emptyArray : _echo ( value : [])
@export (
as : "coreHeadingContentItems"
type : DICTIONARY
)
@export (
as : "coreHeadingContentReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreHeadingContentReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreParagraphContentItems"
type : DICTIONARY
)
@export (
as : "coreParagraphContentReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreParagraphContentReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreImageAltItems"
type : DICTIONARY
)
@export (
as : "coreImageAltReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreImageAltReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreImageCaptionItems"
type : DICTIONARY
)
@export (
as : "coreImageCaptionReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreImageCaptionReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreButtonTextItems"
type : DICTIONARY
)
@export (
as : "coreButtonTextReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreButtonTextReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreTableCaptionItems"
type : DICTIONARY
)
@export (
as : "coreTableCaptionReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreTableCaptionReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreTableBodyCellsContentItems"
type : DICTIONARY
)
@export (
as : "coreTableBodyCellsContentReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreTableBodyCellsContentReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreListItemContentItems"
type : DICTIONARY
)
@export (
as : "coreListItemContentReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreListItemContentReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreCoverAltItems"
type : DICTIONARY
)
@export (
as : "coreCoverAltReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreCoverAltReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreMediaTextAltItems"
type : DICTIONARY
)
@export (
as : "coreMediaTextAltReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreMediaTextAltReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreVerseContentItems"
type : DICTIONARY
)
@export (
as : "coreVerseContentReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreVerseContentReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreQuoteCitationItems"
type : DICTIONARY
)
@export (
as : "coreQuoteCitationReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreQuoteCitationReplacementsTo"
type : DICTIONARY
)
@export (
as : "corePullquoteCitationItems"
type : DICTIONARY
)
@export (
as : "corePullquoteCitationReplacementsFrom"
type : DICTIONARY
)
@export (
as : "corePullquoteCitationReplacementsTo"
type : DICTIONARY
)
@export (
as : "corePullquoteValueItems"
type : DICTIONARY
)
@export (
as : "corePullquoteValueReplacementsFrom"
type : DICTIONARY
)
@export (
as : "corePullquoteValueReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreAudioCaptionItems"
type : DICTIONARY
)
@export (
as : "coreAudioCaptionReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreAudioCaptionReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreVideoCaptionItems"
type : DICTIONARY
)
@export (
as : "coreVideoCaptionReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreVideoCaptionReplacementsTo"
type : DICTIONARY
)
@export (
as : "corePreformattedContentItems"
type : DICTIONARY
)
@export (
as : "corePreformattedContentReplacementsFrom"
type : DICTIONARY
)
@export (
as : "corePreformattedContentReplacementsTo"
type : DICTIONARY
)
@export (
as : "coreEmbedCaptionItems"
type : DICTIONARY
)
@export (
as : "coreEmbedCaptionReplacementsFrom"
type : DICTIONARY
)
@export (
as : "coreEmbedCaptionReplacementsTo"
type : DICTIONARY
)
@remove
}
}
query FetchData (
$pageIDs : [ID!]! = []
$pageStatus : [CustomPostStatusEnum!]! = [ publish ]
)
@depends ( on : "InitializeBlockVariables" )
@include ( if : $hasMasterPages )
{
fetchDataPages : pages ( filter : { ids : $pageIDs , status : $pageStatus }) {
id
rawTitle
@export (
as : "rawTitle"
type : DICTIONARY
)
rawContent
@export (
as : "rawContent"
type : DICTIONARY
)
# Also export it as "transformed" for if the from/to languages are the same (and no translation is done)
@export (
as : "transformedRawContent"
type : DICTIONARY
)
rawExcerpt
@export (
as : "rawExcerpt"
type : DICTIONARY
)
}
}
query FetchBlockData (
$pageIDs : [ID!]! = []
$pageStatus : [CustomPostStatusEnum!]! = [ publish ]
)
@depends ( on : "FetchData" )
@include ( if : $executeTranslation )
{
fetchBlockDataPages : pages ( filter : { ids : $pageIDs , status : $pageStatus }) {
id
coreHeading : blockFlattenedDataItems (
filterBy : { include : "core/heading" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.content" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreHeadingContentItems"
type : DICTIONARY
)
coreParagraph : blockFlattenedDataItems (
filterBy : { include : "core/paragraph" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.content" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreParagraphContentItems"
type : DICTIONARY
)
coreImage : blockFlattenedDataItems (
filterBy : { include : "core/image" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { key : "attributes" }
affectDirectivesUnderPos : [ 1 , 3 ]
)
@underJSONObjectProperty (
by : { key : "alt" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreImageAltItems"
type : DICTIONARY
)
@underJSONObjectProperty (
by : { key : "caption" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreImageCaptionItems"
type : DICTIONARY
)
coreButton : blockFlattenedDataItems (
filterBy : { include : "core/button" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.text" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreButtonTextItems"
type : DICTIONARY
)
coreTable : blockFlattenedDataItems (
filterBy : { include : "core/table" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { key : "attributes" }
affectDirectivesUnderPos : [ 1 , 3 ]
)
@underJSONObjectProperty (
by : { key : "caption" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreTableCaptionItems"
type : DICTIONARY
)
@underJSONObjectProperty (
by : { key : "body" }
failIfNonExistingKeyOrPath : false
)
@underEachArrayItem
@underJSONObjectProperty (
by : { key : "cells" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { key : "content" }
)
@export (
as : "coreTableBodyCellsContentItems"
type : DICTIONARY
)
coreListItem : blockFlattenedDataItems (
filterBy : { include : "core/list-item" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.content" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreListItemContentItems"
type : DICTIONARY
)
coreCover : blockFlattenedDataItems (
filterBy : { include : "core/cover" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.alt" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreCoverAltItems"
type : DICTIONARY
)
coreMediaText : blockFlattenedDataItems (
filterBy : { include : "core/media-text" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.mediaAlt" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreMediaTextAltItems"
type : DICTIONARY
)
coreVerse : blockFlattenedDataItems (
filterBy : { include : "core/verse" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.content" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreVerseContentItems"
type : DICTIONARY
)
coreQuote : blockFlattenedDataItems (
filterBy : { include : "core/quote" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.citation" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreQuoteCitationItems"
type : DICTIONARY
)
corePullquote : blockFlattenedDataItems (
filterBy : { include : "core/pullquote" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { key : "attributes" }
affectDirectivesUnderPos : [ 1 , 3 ]
)
@underJSONObjectProperty (
by : { key : "citation" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "corePullquoteCitationItems"
type : DICTIONARY
)
@underJSONObjectProperty (
by : { key : "value" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "corePullquoteValueItems"
type : DICTIONARY
)
coreAudio : blockFlattenedDataItems (
filterBy : { include : "core/audio" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.caption" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreAudioCaptionItems"
type : DICTIONARY
)
coreVideo : blockFlattenedDataItems (
filterBy : { include : "core/video" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.caption" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreVideoCaptionItems"
type : DICTIONARY
)
corePreformatted : blockFlattenedDataItems (
filterBy : { include : "core/preformatted" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.content" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "corePreformattedContentItems"
type : DICTIONARY
)
coreEmbed : blockFlattenedDataItems (
filterBy : { include : "core/embed" }
)
@underEachArrayItem
@underJSONObjectProperty (
by : { path : "attributes.caption" }
failIfNonExistingKeyOrPath : false
)
@export (
as : "coreEmbedCaptionItems"
type : DICTIONARY
)
}
}
query AdaptData
@depends ( on : "FetchBlockData" )
@include ( if : $hasMasterPages )
{
adaptedToRawTitle : _echo ( value : $rawTitle )
@underEachJSONObjectProperty (
passValueOnwardsAs : "value"
)
@applyField (
name : "_echo"
arguments : {
value : [ $value ]
}
setResultInResponse : true
)
@export ( as : "adaptedToRawTitle" )
adaptedFromTitle : _echo ( value : $rawTitle )
@underEachJSONObjectProperty
@applyField (
name : "_echo"
arguments : {
value : [ "" ]
}
setResultInResponse : true
)
@export ( as : "adaptedFromTitle" )
adaptedToRawExcerpt : _echo ( value : $rawExcerpt )
@underEachJSONObjectProperty (
passValueOnwardsAs : "value"
)
@applyField (
name : "_echo"
arguments : {
value : [ $value ]
}
setResultInResponse : true
)
@export ( as : "adaptedToRawExcerpt" )
adaptedFromRawExcerpt : _echo ( value : $rawExcerpt )
@underEachJSONObjectProperty
@applyField (
name : "_echo"
arguments : {
value : [ "" ]
}
setResultInResponse : true
)
@export ( as : "adaptedFromRawExcerpt" )
}
query TransformData
@depends ( on : "AdaptData" )
@include ( if : $hasMasterPages )
{
transformations : _echo ( value : {
metaRawTitle : {
from : $adaptedFromTitle ,
to : $adaptedToRawTitle ,
},
metaRawExcerpt : {
from : $adaptedFromRawExcerpt ,
to : $adaptedToRawExcerpt ,
},
coreHeadingContent : {
from : $coreHeadingContentItems ,
to : $coreHeadingContentItems ,
},
coreParagraphContent : {
from : $coreParagraphContentItems ,
to : $coreParagraphContentItems ,
},
coreImageAlt : {
from : $coreImageAltItems ,
to : $coreImageAltItems ,
},
coreImageCaption : {
from : $coreImageCaptionItems ,
to : $coreImageCaptionItems ,
},
coreButtonText : {
from : $coreButtonTextItems
to : $coreButtonTextItems
},
coreTableCaption : {
from : $coreTableCaptionItems ,
to : $coreTableCaptionItems ,
},
coreTableBodyCellsContent : {
from : $coreTableBodyCellsContentItems ,
to : $coreTableBodyCellsContentItems ,
},
coreListItemContent : {
from : $coreListItemContentItems ,
to : $coreListItemContentItems ,
},
coreCoverAlt : {
from : $coreCoverAltItems ,
to : $coreCoverAltItems ,
},
coreMediaTextAlt : {
from : $coreMediaTextAltItems ,
to : $coreMediaTextAltItems ,
},
coreVerseContent : {
from : $coreVerseContentItems ,
to : $coreVerseContentItems ,
},
coreQuoteCitation : {
from : $coreQuoteCitationItems ,
to : $coreQuoteCitationItems ,
},
corePullquoteCitation : {
from : $corePullquoteCitationItems ,
to : $corePullquoteCitationItems ,
},
corePullquoteValue : {
from : $corePullquoteValueItems ,
to : $corePullquoteValueItems ,
},
coreAudioCaption : {
from : $coreAudioCaptionItems ,
to : $coreAudioCaptionItems ,
},
coreVideoCaption : {
from : $coreVideoCaptionItems ,
to : $coreVideoCaptionItems ,
},
corePreformattedContent : {
from : $corePreformattedContentItems ,
to : $corePreformattedContentItems ,
},
coreEmbedCaption : {
from : $coreEmbedCaptionItems ,
to : $coreEmbedCaptionItems ,
},
})
@if ( condition : $executeTranslation )
@underEachJSONObjectProperty
@underJSONObjectProperty ( by : { key : "to" })
@underEachJSONObjectProperty
@underEachArrayItem
@strTranslate (
from : $fromLanguage ,
to : $toLanguage
)
@export ( as : "transformations" )
}
query EscapeRegexStrings
@depends ( on : "TransformData" )
@include ( if : $executeTranslation )
{
escapedRegexStrings : _echo ( value : $transformations )
@underEachJSONObjectProperty (
filter : {
by : {
excludeKeys : [
"metaRawTitle" ,
"metaRawExcerpt"
]
}
}
)
@underJSONObjectProperty ( by : { key : "from" })
@underEachJSONObjectProperty
@underEachArrayItem
@strQuoteRegex
@underEachJSONObjectProperty (
filter : {
by : {
excludeKeys : [
"metaRawTitle" ,
"metaRawExcerpt"
]
}
}
)
@underJSONObjectProperty (
by : { key : "to" }
)
@underEachJSONObjectProperty (
affectDirectivesUnderPos : [ 1 , 3 ]
)
@underEachArrayItem
@strRegexReplace (
searchRegex : "# \\ $( \\ d+)#" ,
replaceWith : " \\\\\\ $1"
)
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "${1}%s${2}" ,
values : [ $value ]
},
setResultInResponse : true
)
@export ( as : "escapedRegexTransformations" )
}
query CreateRegexReplacements
@depends ( on : "EscapeRegexStrings" )
@include ( if : $executeTranslation )
{
regexReplacements : _echo ( value : $escapedRegexTransformations )
@underJSONObjectProperty (
by : { key : "coreHeadingContent" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:heading .*?--> \\ n?<h[1-6] ?.*?>)%s(</h[1-6]> \\ n?<!-- /wp:heading -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreHeadingContentReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreHeadingContentReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreParagraphContent" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:paragraph .*?--> \\ n?<p ?.*?>)%s(</p> \\ n?<!-- /wp:paragraph -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreParagraphContentReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreParagraphContentReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreImageAlt" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:image .*?--> \\ n?.*<img .*?alt= \\\" )%s( \\\" .*>.* \\ n?<!-- /wp:image -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreImageAltReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreImageAltReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreImageCaption" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:image .*?--> \\ n?.*<figcaption ?.*?>)%s(</figcaption>.* \\ n?<!-- /wp:image -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreImageCaptionReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreImageCaptionReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreButtonText" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:button .*?--> \\ n?.*<a ?.*?>)%s(</a>.* \\ n?<!-- /wp:button -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreButtonTextReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreButtonTextReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreTableCaption" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:table .*?--> \\ n?.*<figcaption ?.*?>.*)%s(.*</figcaption>.* \\ n?<!-- /wp:table -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreTableCaptionReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreTableCaptionReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreTableBodyCellsContent" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:table .*?--> \\ n?.*<table ?.*?>.*)%s(.*</table>.* \\ n?<!-- /wp:table -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreTableBodyCellsContentReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreTableBodyCellsContentReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreListItemContent" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:list-item .*?--> \\ n?<li ?.*?>)%s(</li> \\ n?<!-- /wp:list-item -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreListItemContentReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreListItemContentReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreCoverAlt" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:cover .*?--> \\ n?.*<img .*?alt= \\\" )%s( \\\" .*>.* \\ n?<!-- /wp:cover -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreCoverAltReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreCoverAltReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreMediaTextAlt" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:media-text .*?--> \\ n?<div .*><figure .*><img .*?alt= \\\" )%s( \\\" )#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreMediaTextAltReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreMediaTextAltReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreVerseContent" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:verse .*?--> \\ n?<pre ?.*?>)%s(</pre> \\ n?<!-- /wp:verse -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreVerseContentReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreVerseContentReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreQuoteCitation" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:quote .*?--> \\ n?<blockquote ?.*?>.*<cite ?.*?>)%s(</cite></blockquote> \\ n?<!-- /wp:quote -->)#s" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreQuoteCitationReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreQuoteCitationReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "corePullquoteCitation" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:pullquote .*?--> \\ n?<figure ?.*?><blockquote ?.*?><p ?.*?>.*</p><cite ?.*?>)%s(</cite></blockquote></figure> \\ n?<!-- /wp:pullquote -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "corePullquoteCitationReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "corePullquoteCitationReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "corePullquoteValue" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:pullquote .*?--> \\ n?<figure ?.*?><blockquote ?.*?><p ?.*?>)%s(</p>(?:<cite ?.*?>.*</cite>)?</blockquote></figure> \\ n?<!-- /wp:pullquote -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "corePullquoteValueReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "corePullquoteValueReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreAudioCaption" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:audio .*?--> \\ n?<figure ?.*?><audio ?.*?>.*</audio><figcaption ?.*?>)%s(</figcaption></figure> \\ n?<!-- /wp:audio -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreAudioCaptionReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreAudioCaptionReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreVideoCaption" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:video .*?--> \\ n?<figure ?.*?><video ?.*?>.*</video><figcaption ?.*?>)%s(</figcaption></figure> \\ n?<!-- /wp:video -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreVideoCaptionReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreVideoCaptionReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "corePreformattedContent" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:preformatted .*?--> \\ n?<pre ?.*?>)%s(</pre> \\ n?<!-- /wp:preformatted -->)#" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "corePreformattedContentReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "corePreformattedContentReplacementsTo" ,
)
@underJSONObjectProperty (
by : { key : "coreEmbedCaption" }
affectDirectivesUnderPos : [ 1 , 6 ]
)
@underJSONObjectProperty (
by : { key : "from" }
affectDirectivesUnderPos : [ 1 , 4 ],
)
@underEachJSONObjectProperty
@underEachArrayItem (
passValueOnwardsAs : "value"
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "#(<!-- wp:embed .*?--> \\ n?<figure ?.*?><div ?.*?>.*</div><figcaption ?.*?>)%s(</figcaption></figure> \\ n?<!-- /wp:embed -->)#s" ,
values : [ $value ]
},
setResultInResponse : true
)
@export (
as : "coreEmbedCaptionReplacementsFrom" ,
)
@underJSONObjectProperty (
by : { key : "to" }
)
@export (
as : "coreEmbedCaptionReplacementsTo" ,
)
}
query ExecuteRegexReplacements
@depends ( on : "CreateRegexReplacements" )
@include ( if : $executeTranslation )
{
transformedRawContent : _echo ( value : $rawContent )
@underEachJSONObjectProperty (
passKeyOnwardsAs : "pageID"
affectDirectivesUnderPos : [
1 , 2 ,
6 , 7 ,
11 , 12 ,
16 , 17 ,
21 , 22 ,
26 , 27 ,
31 , 32 ,
36 , 37 ,
41 , 42 ,
46 , 47 ,
51 , 52 ,
56 , 57 ,
61 , 62 ,
66 , 67 ,
71 , 72 ,
76 , 77 ,
81 , 82 ,
86 , 87 ,
]
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreHeadingContentReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreHeadingContentReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreHeadingContentReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreHeadingContentReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreHeadingContentReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreHeadingContentReplacementsFrom ,
replaceWith : $postCoreHeadingContentReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreParagraphContentReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreParagraphContentReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreParagraphContentReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreParagraphContentReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreParagraphContentReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreParagraphContentReplacementsFrom ,
replaceWith : $postCoreParagraphContentReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreImageAltReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreImageAltReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreImageAltReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreImageAltReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreImageAltReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreImageAltReplacementsFrom ,
replaceWith : $postCoreImageAltReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreImageCaptionReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreImageCaptionReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreImageCaptionReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreImageCaptionReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreImageCaptionReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreImageCaptionReplacementsFrom ,
replaceWith : $postCoreImageCaptionReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreButtonTextReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreButtonTextReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreButtonTextReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreButtonTextReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreButtonTextReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreButtonTextReplacementsFrom ,
replaceWith : $postCoreButtonTextReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreTableCaptionReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreTableCaptionReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreTableCaptionReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreTableCaptionReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreTableCaptionReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreTableCaptionReplacementsFrom ,
replaceWith : $postCoreTableCaptionReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreTableBodyCellsContentReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreTableBodyCellsContentReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreTableBodyCellsContentReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreTableBodyCellsContentReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreTableBodyCellsContentReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreTableBodyCellsContentReplacementsFrom ,
replaceWith : $postCoreTableBodyCellsContentReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreListItemContentReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreListItemContentReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreListItemContentReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreListItemContentReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreListItemContentReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreListItemContentReplacementsFrom ,
replaceWith : $postCoreListItemContentReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreCoverAltReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreCoverAltReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreCoverAltReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreCoverAltReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreCoverAltReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreCoverAltReplacementsFrom ,
replaceWith : $postCoreCoverAltReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreMediaTextAltReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreMediaTextAltReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreMediaTextAltReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreMediaTextAltReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreMediaTextAltReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreMediaTextAltReplacementsFrom ,
replaceWith : $postCoreMediaTextAltReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreVerseContentReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreVerseContentReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreVerseContentReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreVerseContentReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreVerseContentReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreVerseContentReplacementsFrom ,
replaceWith : $postCoreVerseContentReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreQuoteCitationReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreQuoteCitationReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreQuoteCitationReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreQuoteCitationReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreQuoteCitationReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreQuoteCitationReplacementsFrom ,
replaceWith : $postCoreQuoteCitationReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $corePullquoteCitationReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $corePullquoteCitationReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCorePullquoteCitationReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $corePullquoteCitationReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCorePullquoteCitationReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCorePullquoteCitationReplacementsFrom ,
replaceWith : $postCorePullquoteCitationReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $corePullquoteValueReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $corePullquoteValueReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCorePullquoteValueReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $corePullquoteValueReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCorePullquoteValueReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCorePullquoteValueReplacementsFrom ,
replaceWith : $postCorePullquoteValueReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreAudioCaptionReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreAudioCaptionReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreAudioCaptionReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreAudioCaptionReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreAudioCaptionReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreAudioCaptionReplacementsFrom ,
replaceWith : $postCoreAudioCaptionReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreVideoCaptionReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreVideoCaptionReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreVideoCaptionReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreVideoCaptionReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreVideoCaptionReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreVideoCaptionReplacementsFrom ,
replaceWith : $postCoreVideoCaptionReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $corePreformattedContentReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $corePreformattedContentReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCorePreformattedContentReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $corePreformattedContentReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCorePreformattedContentReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCorePreformattedContentReplacementsFrom ,
replaceWith : $postCorePreformattedContentReplacementsTo
)
@applyField (
name : "_propertyExistsInJSONObject"
arguments : {
object : $coreEmbedCaptionReplacementsFrom
by : { key : $pageID }
}
passOnwardsAs : "hasPageID"
)
@if (
condition : $hasPageID
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreEmbedCaptionReplacementsFrom ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreEmbedCaptionReplacementsFrom"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $coreEmbedCaptionReplacementsTo ,
by : {
key : $pageID
}
},
passOnwardsAs : "postCoreEmbedCaptionReplacementsTo"
)
@strRegexReplaceMultiple (
limit : 1 ,
searchRegex : $postCoreEmbedCaptionReplacementsFrom ,
replaceWith : $postCoreEmbedCaptionReplacementsTo
)
@export ( as : "transformedRawContent" )
}
query PrepareMetaReplacements
@depends ( on : "TransformData" )
@include ( if : $hasMasterPages )
{
transformedMetaTitle : _echo ( value : $rawTitle )
@underEachJSONObjectProperty (
passKeyOnwardsAs : "pageID"
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "metaRawTitle.to.%s" ,
values : [ $pageID ]
}
passOnwardsAs : "titlePath"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $transformations
by : { path : $titlePath }
}
passOnwardsAs : "transformedPostTitleAsArray"
)
@applyField (
name : "_arrayItem" ,
arguments : {
array : $transformedPostTitleAsArray
position : 0
}
setResultInResponse : true
)
@export (
as : "transformedRawTitle"
)
transformedMetaRawExcerpt : _echo ( value : $rawExcerpt )
@underEachJSONObjectProperty (
passKeyOnwardsAs : "pageID"
affectDirectivesUnderPos : [ 1 , 2 , 3 ]
)
@applyField (
name : "_sprintf" ,
arguments : {
string : "metaRawExcerpt.to.%s" ,
values : [ $pageID ]
}
passOnwardsAs : "rawExcerptPath"
)
@applyField (
name : "_objectProperty" ,
arguments : {
object : $transformations
by : { path : $rawExcerptPath }
}
passOnwardsAs : "transformedPostRawExcerptAsArray"
)
@applyField (
name : "_arrayItem" ,
arguments : {
array : $transformedPostRawExcerptAsArray
position : 0
}
setResultInResponse : true
)
@export (
as : "transformedRawExcerpt"
)
}
query ExportMutationInputs (
$pageIDs : [ID!]! = []
$pageStatus : [CustomPostStatusEnum!]! = [ publish ]
)
@depends ( on : [
"ExecuteRegexReplacements" ,
"PrepareMetaReplacements"
])
@include ( if : $hasMasterPages )
{
exportPages : pages ( filter : { ids : $pageIDs , status : $pageStatus }) {
id
transformedRawContent : _objectProperty (
object : $transformedRawContent ,
by : {
key : $__id
}
)
transformedRawTitle : _objectProperty (
object : $transformedRawTitle ,
by : {
key : $__id
}
)
transformedSlug : _echo ( value : $__transformedRawTitle )
transformedRawExcerpt : _objectProperty (
object : $transformedRawExcerpt ,
by : {
key : $__id
}
)
input : _echo ( value : {
status : draft ,
title : $__transformedRawTitle ,
slug : $__transformedSlug ,
excerpt : $__transformedRawExcerpt ,
contentAs : {
html : $__transformedRawContent
}
})
@export (
as : "createPostMutationInputs"
type : LIST
)
}
}
mutation CreatePagesWithTranslationOnExternalSite
@depends ( on : "ExportMutationInputs" )
@include ( if : $hasMasterPages )
{
createExternalSitePageHTTPRequests : _echo ( value : $createPostMutationInputs )
@underEachArrayItem (
passValueOnwardsAs : "input"
)
@applyField (
name : "_sendGraphQLHTTPRequest"
arguments : {
input : {
endpoint : $endpoint ,
query : "" "
mutation CreatePageFromMasterSite($input: JSONObject!) {
createPage(input: $input) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
page {
id
slug
title
content
status
url
excerpt
}
}
}
""" ,
variables : [
{
name : "input" ,
value : $input
}
],
options : {
headers : [
{
name : "Authorization" ,
value : $authorizationHeaderValue
}
]
}
}
},
setResultInResponse : true
)
}
Copy