Table des matières
Préparer la voie
Intégration du client Apollo
Construire le composant de recherche
Maison interface Web tutoriel CSS Recherche native contre Jetpack Recherche instantanée dans WordPress sans tête avec Gatsby

Recherche native contre Jetpack Recherche instantanée dans WordPress sans tête avec Gatsby

Mar 21, 2025 am 11:04 AM

Recherche native contre Jetpack Recherche instantanée dans WordPress sans tête avec Gatsby

Prêt à explorer WordPress sans tête avec Gatsby? Cet article plonge dans la fonctionnalité de recherche, en comparant la recherche native de WordPress avec la recherche instantanée Jetpack. Nous allons construire un site Gatsby en tirant parti du plugin gatsby-source-wordpress (introduit dans Gatsby 3, mars 2021) et WPGraphQL pour une intégration WordPress plus fluide.

Cette exploration est informée par l'expérience de construction de thèmes WP Gatsby - un marché pour les développeurs créant des sites Gatsby propulsés par WordPress. Nous nous concentrerons sur deux méthodes de recherche: en utilisant la recherche intégrée de WordPress et implémentation de la recherche instantanée Jetpack.

Préparer la voie

Créons un site Gatsby à l'aide du démarreur gatsby-starter-wordpress-blog :

 Gatsby New Gatsby-Wordpress-W-Search https://github.com/gatsbyjs/gatsby-starter-wordpress-blog
Copier après la connexion

Ce démarreur fournit un article de base et un routage de page de blog. Pour notre exemple, nous exclurons les pages des résultats de recherche. Nous utiliserons la démo WordPress du démarreur; Si vous utilisez le vôtre, n'oubliez pas les plugins WordPress nécessaires: WPGraphQL (pour l'API GraphQL) et WPGATSBY (pour les modifications de schéma spécifiques à Gatsby et l'optimisation de la construction). Les deux sont disponibles via le référentiel de plugin WordPress.

Intégration du client Apollo

GATSBY utilise généralement des requêtes de page ou useStaticQuery pour la récupération des données. Cependant, pour les recherches initiées par l'utilisateur, nous avons besoin d'une solution dynamique. Nous utiliserons le client Apollo pour interagir directement avec l'API WPGraphQL, gérer les demandes de données et la mise en cache.

Installez le client Apollo:

 fil Add @ Apollo / Client Cross-Fetch
Copier après la connexion

Enveloppez l'application avec ApolloProvider à l'aide de l'API wrapRootElement de Gatsby dans gatsby-browser.js :

 // gatsby-browser.js
// ... (importations) ...

const client = new Apolloclient ({
  // ... (configuration du lien et du cache) ...
  URI: "https://wpgatsbydemo.wpengine.com/graphql", // Remplacez par votre point de terminaison GraphQL
  Réfléchir: cross-fetch,
});

export const wraprootelement = ({element}) => (
  <apolloprovider client="{client}">{élément}</apolloprovider>
));
Copier après la connexion

Construire le composant de recherche

Créez les fichiers nécessaires:

 toucher src / composants / search.js src / composants / search-form.js src / composants / search-résults.js src / css / search.css
Copier après la connexion

Le composant Search gère l'état du terme de recherche et rend le formulaire et les résultats:

 // src / composants / search.js
// ... (importations) ...

const search = () =&gt; {
  const [searchTerm, setSearchTerm] = UseState ("");
  retour (
    <div classname="search-container">
      <searchform setsearchterm="{setSearchTerm}"></searchform>
      {searchterm &amp;&amp;<searchresults searchterm="{searchTerm}"></searchresults> }
    </div>
  ));
};
Copier après la connexion

SearchForm est une forme simple:

 // src / composants / search-form.js
// ... (importations) ...

const searchform = ({setSearchTerm}) =&gt; {
  // ... (fonction d'état et handlesUbmit) ...
  retour (
    
Copier après la connexion
setValue (e.target.value)} />
)); };

SearchResults utilise le crochet useQuery du client Apollo:

 // src / composants / search-résults.js
// ... (importations) ...

const get_results = gql`
  requête ($ searchterm: string) {
    Posts (où: {search: $ searchterm}) {
      Bords {
        Node {
          identifiant
          uri
          titre
          extrait
        }
      }
    }
  }
`;

const searchResults = ({searchterm}) =&gt; {
  const {data, chargement, error} = useQuery (get_results, {variables: {searchTerm}});
  // ... (chargement, erreur et traitement des données) ...
};
Copier après la connexion

Ajoutez le composant Search à votre mise en page (ou utilisez wrapPageElement pour l'affichage persistant). Le reste de l'article détaille la pagination, la recherche persistante, la gestion des publications et les pages, et en utilisant la recherche instantanée Jetpack pour des capacités de recherche améliorées. Les extraits de code fournis offrent une base pour construire une fonctionnalité de recherche robuste dans votre site Gatsby.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Ajout d'ombres de boîte aux blocs et éléments WordPress Ajout d'ombres de boîte aux blocs et éléments WordPress Mar 09, 2025 pm 12:53 PM

Ajout d'ombres de boîte aux blocs et éléments WordPress

Créez un formulaire de contact JavaScript avec le cadre Smart Forms Créez un formulaire de contact JavaScript avec le cadre Smart Forms Mar 07, 2025 am 11:33 AM

Créez un formulaire de contact JavaScript avec le cadre Smart Forms

Travailler avec GraphQL Caching Travailler avec GraphQL Caching Mar 19, 2025 am 09:36 AM

Travailler avec GraphQL Caching

Faire votre première transition Svelte personnalisée Faire votre première transition Svelte personnalisée Mar 15, 2025 am 11:08 AM

Faire votre première transition Svelte personnalisée

Demystifier les lecteurs d'écran: formulaires accessibles et meilleures pratiques Demystifier les lecteurs d'écran: formulaires accessibles et meilleures pratiques Mar 08, 2025 am 09:45 AM

Demystifier les lecteurs d'écran: formulaires accessibles et meilleures pratiques

Comparaison des 5 meilleurs constructeurs de formulaires PHP (et 3 scripts libres) Comparaison des 5 meilleurs constructeurs de formulaires PHP (et 3 scripts libres) Mar 04, 2025 am 10:22 AM

Comparaison des 5 meilleurs constructeurs de formulaires PHP (et 3 scripts libres)

Show, ne dit pas Show, ne dit pas Mar 16, 2025 am 11:49 AM

Show, ne dit pas

Que diable sont les commandes NPM? Que diable sont les commandes NPM? Mar 15, 2025 am 11:36 AM

Que diable sont les commandes NPM?

See all articles