Défi de support technique

Avertissement

Ce défi comprend un ensemble de questions vous permettant de démontrer vos meilleures compétences techniques dans WordPress.
Veuillez vous assurer que le code soumis en réponse à ces questions est écrit par vous.
Les réponses copiées sur Internet sont faciles à détecter : chaque morceau de code est aussi unique qu'une empreinte digitale.
L'utilisation des réponses de quelqu'un d'autre dans l'une des questions du défi technique entraînera une disqualification.
Il est préférable de soumettre un code imparfait écrit par vous plutôt qu'un code « correct » copié sur Internet.
En étant l'auteur du code, vous présentez votre raisonnement et nous permettez d'engager un dialogue honnête sur vos compétences et votre future carrière chez SearchWP.
Merci et bonne chance pour le défi !

Défi MySQL 1

Un client travaille sur une solution personnalisée pour sa recherche, mais la requête MySQL qu'il a élaborée renvoie une erreur lors de son exécution :

SELECT DISTINCT t.id, t.token
FROM wp_searchwp_tokens t
LEFT JOIN wp_searchwp_index i
WHERE 1=1
AND i.source IN ('post.post', 'post.page','post.product')
AND t.token IN ('make')

a) Veuillez résumer les étapes que vous avez suivies pour enquêter sur le problème.
b) Veuillez rédiger une réponse au client qui expose vos conclusions et vos recommandations.

Défi MySQL 2

Combien de tables sont utilisées dans la requête suivante ?

SELECT SQL_CALC_FOUND_ROWS s.id,s.source,s.site, SUM(relevance) AS relevance
FROM
(SELECT s.id, s.source, s.site, s.attribute,
((SUM(s.occurrences) * CASE
WHEN ((s.source = 'post.post'
AND (s.attribute IN ('title','slug','excerpt')))) THEN 300
WHEN ((s.source = 'post.post'
AND (s.attribute IN ('content')))) THEN 1
END)) AS relevance
FROM wp_searchwp_index s
LEFT JOIN wp_posts s1 ON (s1.ID = s.id)
LEFT JOIN wp_posts AS swpwcposts ON swpwcposts.ID = s.id
WHERE 1=1
AND 1=1
AND s.token IN (73,554)
AND 1=1
AND ((s.source = 'post.post'
AND (s.attribute IN ('title','content','slug','excerpt'))
AND ((`s1`.`post_type` = 'post')
AND (`s1`.`post_status` IN ('publish')))))
GROUP BY s.site,s.source,s.attribute,s.id) AS s
LEFT JOIN wp_posts s1 ON (s1.ID = s.id)
LEFT JOIN wp_posts AS swpwcposts ON swpwcposts.ID = s.id
WHERE 1=1
AND (SUBSTRING(s.source, 1, 5) != 'post.'
OR (SUBSTRING(s.source, 1, 5) = 'post.' AND s.id != '0'))
GROUP BY s.site,s.source,s.id
HAVING relevance > 0
ORDER BY relevance DESC
LIMIT 0,10

Défi de hook

Un client souhaite utiliser l'exemple de code de la page de hook searchwp\query\args Search WP hook.
Mais il a besoin d'aide pour modifier le code afin qu'il ne fonctionne que pour les utilisateurs déconnectés.

a) Veuillez expliquer comment vous personnaliseriez l'exemple de code pour répondre à la demande du client.
b) Veuillez rédiger une réponse au client.

Défi WP_Query

Créez une WP_Query pour obtenir les identifiants de tous les fichiers multimédias attachés à un article.

Défi bonus (facultatif)

Ce défi est facultatif et sa difficulté est accrue.
Résoudre ce défi donne plus de points à un candidat, mais celui-ci n'est pas obligé de le faire.

SearchWP indexe le site et découpe le contenu en tokens (le divise en tokens ou mots-clés individuels).
Il utilise les espaces, la ponctuation et les caractères spéciaux comme délimiteurs de tokens.
Ainsi, s'il devait indexer une longueur de focale d'appareil photo comme f/0.95, il diviserait cela dans les tokens suivants : f, 0 et 95.

Pour éviter que cela ne se produise, SearchWP utilise des expressions régulières pour trouver les mots-clés qui doivent être considérés comme un seul token, y compris les caractères spéciaux.
Ainsi, avec l'expression régulière correcte, nous pourrions indiquer à SearchWP que f/0.95 est un seul token et ne doit pas être divisé en plusieurs tokens.
Un hook searchwp\tokens\regex_patterns (documenté ici) est disponible pour ajouter des expressions régulières personnalisées à cet effet.

Supposons que nous ayons un site web de photographe et que nous voulions indiquer à SearchWP de considérer les longueurs de focale des appareils photo intactes comme un seul token. Des exemples de focales sont présentés ci-dessous :

f/0.95
f/2
f/1.4

Quelle expression régulière peut être utilisée pour correspondre à toutes les focales possibles et comment utiliserions-nous le hook ci-dessus pour ajouter l'expression régulière correcte ?

Créez dès aujourd'hui une meilleure expérience de recherche WordPress

Ne perdez plus jamais de visiteurs à cause de résultats de recherche inutiles. SearchWP rend la création de votre propre recherche WordPress intelligente rapide et facile.

Obtenez SearchWP maintenant
Icône de moteurs de recherche multiples