Leçon 17 : Ajouter automatiquement un bloc obligatoire
Chaque fois qu'un nouvel article est créé, nous pouvons utiliser les fonctionnalités d'automatisation pour valider et modifier son contenu.
La requête de cette leçon du tutoriel vérifie si un certain bloc obligatoire est présent dans l'article et, s'il est absent, l'ajoute.
Requête GraphQL pour ajouter un bloc manquant
Pour que cette requête GraphQL fonctionne, la Configuration du schéma appliquée à l'endpoint doit avoir les Mutations Imbriquées activées
Cette requête GraphQL vérifie si le bloc obligatoire wp:comments a déjà été ajouté à l'article. S'il est absent, il est ajouté en bas du contenu.
Enregistrez ce contenu en tant que Persisted Query, avec le slug insert-mandatory-comments-block-if-missing :
query CheckIfCommentsBlockExists($postId: ID!) {
posts(
filter: {
ids: [$postId]
search: "\"<!-- /wp:comments -->\""
}
) {
id
}
blockExists: _notEmpty(value: $__posts)
@export(as: "blockExists")
}
mutation MaybeInsertCommentsBlock($postId: ID!)
@depends(on: "CheckIfCommentsBlockExists")
@skip(if: $blockExists)
{
post(by: { id: $postId }) {
id
rawContent
adaptedRawContent: _strAppend(
after: $__rawContent
append: """
<!-- wp:comments -->
<div class="wp-block-comments"><!-- wp:comments-title /-->
<!-- wp:comment-template -->
<!-- wp:columns -->
<div class="wp-block-columns"><!-- wp:column {"width":"40px"} -->
<div class="wp-block-column" style="flex-basis:40px"><!-- wp:avatar {"size":40,"style":{"border":{"radius":"20px"}}} /--></div>
<!-- /wp:column -->
<!-- wp:column -->
<div class="wp-block-column"><!-- wp:comment-author-name {"fontSize":"small"} /-->
<!-- wp:group {"style":{"spacing":{"margin":{"top":"0px","bottom":"0px"}}},"layout":{"type":"flex"}} -->
<div class="wp-block-group" style="margin-top:0px;margin-bottom:0px"><!-- wp:comment-date {"fontSize":"small"} /-->
<!-- wp:comment-edit-link {"fontSize":"small"} /--></div>
<!-- /wp:group -->
<!-- wp:comment-content /-->
<!-- wp:comment-reply-link {"fontSize":"small"} /--></div>
<!-- /wp:column --></div>
<!-- /wp:columns -->
<!-- /wp:comment-template -->
<!-- wp:comments-pagination -->
<!-- wp:comments-pagination-previous /-->
<!-- wp:comments-pagination-numbers /-->
<!-- wp:comments-pagination-next /-->
<!-- /wp:comments-pagination -->
<!-- wp:post-comments-form /--></div>
<!-- /wp:comments -->
"""
)
update(input: {
contentAs: { html: $__adaptedRawContent },
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
rawContent
}
}
}
}Ajouter un hook pour exécuter la Persisted Query
L'extension Internal GraphQL Server applique par défaut la Configuration du schéma définie dans ses propres Réglages.
Par conséquent, pour que cette requête GraphQL fonctionne, la Configuration du schéma appliquée à l'Internal GraphQL Server doit avoir les Mutations Imbriquées activées.
Ce code PHP se connecte à l'action WordPress draft_post pour exécuter la Persisted Query (via l'extension Internal GraphQL Server) :
use GatoGraphQL\InternalGraphQLServer\GraphQLServer;
use WP_Post;
add_action(
'draft_post',
function (int $postID): void {
GraphQLServer::executePersistedQuery(
'insert-mandatory-comments-block-if-missing',
[
'postId' => $postID,
],
'MaybeInsertCommentsBlock'
);
}
);