Créer un widget de recherche en utilisant le Widget de recherche API de repos WordPress

\
}
Contenu du Widget principal ici
Si (! Empty ($posts) {
Echo \
Foreach (position $position)
Echo \
}
Echo \
}
Echo $args [‘after _ Widget’];
}
\ * *
Formulaire d’option de sortie sur admin
* *
@ Param Array $instance Widget Options
* \
Formulaire de fonction publique ($instance) {
Afficher le formulaire d’option sur admin
$title = (! Empty ($instance [‘title’)) Exemple [‘title’]: ‘;
& quot; Turbine à gaz;
& lt; Étiquette C’est… Php echo $this – & gt; Get _ Field Name (‘title’) Turbine à gaz Quote Turbine à gaz; Titre Étiquette & gt;
& lt; Saisissez la classe = ‘ Widefat ‘ Id = \
& lt;? Php
}
Fin de la classe
Ajouter _ action (‘widgets init’, fonction () {
Register _ Widget (\
});
En gros, nous avons créé un nouveau plug – in. Dans ce plugin, nous avons créé un widget qui affiche une liste personnalisée de messages de la base de connaissances Hero d’un autre site Web.
Ce que nous allons faire maintenant est de le modifier pour créer une fonction de recherche. Étape 1: modifier la requête de base pour obtenir des résultats différents dans l’article précédent, vous vous souviendrez que nous avons discuté de la façon d’obtenir la liste des messages, puis comment modifier les paramètres afin que vous puissiez obtenir les types de messages personnalisés pour la base de connaissances. Ce n’est peut – être pas surprenant, ce n’est pas tout ce qu’on peut faire avec la méthode Get. En utilisant les paramètres du filtre, nous pouvons en fait
, nous pouvons utiliser la fonction get _ Search form () déjà définie par WordPress au lieu de créer un formulaire de recherche séparé.
Dans le fichier plug – in, recherchez dans la fonction Widget une ligne avec un commentaire \ \ contenu principal du Widget et ajoutez get _ Search form (); Et le modifier directement en dessous comme suit:
Contenu du Widget principal ici
Get _ Search form ();
Si (! Empty ($posts) {
Echo \
Foreach (position $position)
Echo \
}
Echo \
}
Maintenant, lorsque nous afficherons le Widget sur la page, vous verrez la liste des messages de la base de connaissances sous le formulaire de recherche standard.

Nous apprenons la situation en utilisant get _ Search form (); Lorsque nous cherchons quelque chose, les paramètres de recherche apparaissent dans l’URL comme suit:
\? S = essai
\
Si (isset ($_ Get [‘s]) & amp Amp;! NULL ($_ Get [‘s’]) {
$Response = WP _ Remote get (‘ http:\\website-with-api.com\wp-json\wp\v2\ht_kb?filter = ‘$ Obtenir [‘s]);
}
Ministère de l & apos; éducation
$Response = WP _ Remote get (‘ http:\\website-with-api.com\wp-json\wp\v2\ht_kb\ «);
}
Ce que ce code fait est de vérifier que $_ Get [‘s’] est défini et n’est pas vide. Dans l’affirmative, veuillez l’inclure dans votre réponse. Sinon, la recherche ne s’exécute pas et vous voulez voir tous les messages de la base de connaissances comme d’habitude.
Pour plus de détails sur la fonction get _ Search form (), voir ici. C’est là que nous voulons que cet article se termine, n’est – ce pas? Après tout, nous avons mis en place un formulaire de recherche qui utilise l’api WordPress rest pour interroger les messages sur les sites externes, puis retourner les résultats en fonction des paramètres de recherche. Mais… Étape 3
Si nous Testons le nouveau Widget de recherche, nous pouvons voir que le Widget fonctionne comme prévu, mais il renvoie également les résultats du site actuel dans le contenu de la page d’accueil. Le Widget de recherche qui affiche les résultats des tests et les pages redirigées vers le modèle de résultats de recherche est dû au système de modèles WordPress. WordPress utilise une chaîne de requête pour déterminer le modèle ou l’ensemble de modèles à utiliser. Parce que, lorsqu’un formulaire de recherche est envoyé, il ajoute le paramètre « s» à l’url et dit à WordPress d’effectuer la recherche et de la rediriger vers la page des résultats de la recherche. Le sujet 216 est la recherche. Php. Pour en savoir plus, consultez la documentation sur la hiérarchie des modèles. Si vous voulez utiliser l’API pour rechercher à la fois sur le site local et sur le site externe, c’est super, parce que vous pouvez voir les résultats des deux. Toutefois, dans ce cas, nous ne voulons pas le faire. Nous voulons simplement que les résultats retournés à l’aide de l’API apparaissent dans le Widget. La page d’accueil devrait rester inchangée. Il y a plusieurs façons de le faire. Par exemple, nous apprendrons à modifier get _ Search form (); La fonction n’utilise plus’ s’ comme paramètre de recherche. Au lieu de cela, il sera remplacé par « A » pour résoudre le problème.
La première étape consiste à modifier physiquement le module en créant une nouvelle fonction.
API de fonction _ Search form ($form) {
$form = ‘& lt; Rôle du formulaire = ‘ Recherche \
& lt; Étiquette & gt;
& lt; Span class = ‘ Texte du lecteur d’écran Gt; ‘ X (‘Search:’, ‘Label’) ‘ LT \ Span & gt;
& lt; Type d’entrée Recherche \
Arch _ Query (). ‘ Quote; Nom = \
& lt \ Étiquette & gt;
& lt; Type de bouton = ‘ Soumis» Classe = ‘ Rechercher la soumission Turbine à gaz Lt; Span class = ‘ Texte du lecteur d’écran Turbine à gaz; Recherche Span & gt LT \ Bouton & gt;
& lt \ Formulaire & gt;;
Retourner le formulaire $;
}
Ajouter un filtre (‘get _ Search form’, ‘API Search form’, 100);
La fonction elle – même est très simple et est essentiellement un nouveau module qui peut être utilisé au lieu du module par défaut. Si nous examinons le sujet de référence 2616 et examinons les modules de recherche existants, nous remarquerons que la seule différence dans le Code est le nom entré dans la recherche. Initialement \
Exposé)
Reviens!
}
$posts = json _ decode (WP Remote retrieve Body ($Response);
Si (NULL ($post) {
Reviens!
}
Echo $args [‘before _ Widget’];
Si (! Empty ($instance [‘title]) {
Echo $args [‘before _ title’]. Appliquer le filtre U (‘Widget _ title’, instance [‘title], $instance, $this – & gt; ID base). Args [‘after _ title’];
}
Contenu du Widget principal ici
Get _ Search form ();
Si (! Empty ($posts) {
Echo \
Foreach (position $position)
Echo \
}
Echo \
}
Echo $args [‘after _ Widget’];
}
\ * *
Formulaire d’option de sortie sur admin
* *
@ Param Array $instance Widget Options
* \
Formulaire de fonction publique ($instance) {
Afficher le formulaire d’option sur admin
$title = (! Empty ($instance [‘title’)) Exemple [‘title’]: ‘;
& quot; Turbine à gaz;
& lt; Étiquette C’est… Php echo $this – & gt; Get _ Field Name (‘title’) Turbine à gaz Quote Turbine à gaz; Titre Étiquette & gt;
& lt; Saisissez la classe = ‘ Widefat ‘ Id = \
Nom =  » C’est… Php echo $this – & gt; Get _ Field Name (‘title’) Turbine à gaz Quote; Type = ‘ Texte ‘ Valeur =  » C’est… Php Echo ESC _ ATTR ($title) Turbine à gaz Quote Turbine à gaz;
& lt;? Php
}
}
API de fonction _ Search form ($form) {
$form = ‘& lt; Rôle du formulaire = ‘ Recherche \
& lt; Étiquette & gt;
& lt; Span class = ‘ Texte du lecteur d’écran Gt; ‘ X (‘Search:’, ‘Label’) ‘ LT \ Span & gt;
& lt; Type d’entrée Recherche \

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *