Créer une section FAQ pour votre site Web WordPress est incroyablement simple. Nous allons utiliser WordPress Custom Post Types pour les questions et réponses. Nous utiliserons ensuite un accordéon jQuery UI pour créer un joli widget accordéon multi-navigateurs. Enfin, nous attribuerons un shortcode afin que nous puissions afficher notre FAQ sur n’importe quelle page ou publication..
Nous allons créer ceci:
Dans ton functions.php (situé dans le répertoire racine de votre thème) - incluez le faq.php fichier que vous avez créé en haut.
/ * functions.php * / include ('faq / faq.php');
init
action. Nous utilisons une fonction anonyme comme second paramètre pour nous aider à tout garder encapsulé au même endroit. Cela aide à la lisibilité et la maintenabilité.étiquettes $
et $ args
comme vu ci-dessous.register_post_type ('FAQ', $ args)
Titre
champ pour la question et le champ de contenu principal pour la réponse. Cela nous permet d’entrer tout type de contenu dans notre réponse (comme des images et vidéos) ainsi que du texte../ * Enregistrer le type de message personnalisé * / / * faq.php * / add_action ('init', function () $ labels = array ('name' => _x ('FAQ', 'nom général du type de message' '), 'singular_name' => _x ('Question', 'post type nom singulier'), 'add_new' => _x ('Ajouter une nouvelle question', 'Question'), 'add_new_item' => __ ('Ajouter une nouvelle question') , 'edit_item' => __ ('Edit Question'), 'new_item' => __ ('Nouvelle question'), 'all_items' => __ ('Toutes les questions FAQ'), 'view_item' => __ ('View Question '),' search_items '=> __ (' FAQ de la recherche '),' not_found '=> __ (' Aucune FAQ trouvée '),' not_found_in_trash '=> __ (' Aucune FAQ trouvée dans la corbeille '),' parent_item_colon ' => ", 'menu_name' => 'FAQ'); $ args = array ('labels' => $ labels, 'public' => true, 'public_queryable' => true, 'show_ui' => true, 'show_in_menu '=> true,' query_var '=> true,' rewrite '=> true,' type_de capacité '=>' post ',' has_archive '=> true,' hiérarchique '=> false,' menu_position '=> null,' prend en charge '=> array (' titre ',' éditeur ',' attributs de page ')); register_post_type (' FAQ ', $ args););
add_action ('wp_enqueue_scripts', 'wptuts_enqueue'); fonction wptuts_enqueue () wp_register_style ('wptuts-jquery-ui-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/south-street/jquery-ui.css' ) wp_enqueue_style ('wptuts-jquery-ui-style'); wp_register_script ('wptuts-custom-js', get_template_directory_uri (). '/faq/faq.js', 'jquery-ui-accordéion', "true); wp_enqueue_script ('wptuts-custom-js');
Vous remarquerez que nous n'en avons utilisé qu'un
wp_enqueue_script
appel, car il est important que les fichiers JavaScript soient chargés dans l’ordre car ils sont dépendants les uns des autres. Réglagejquery-ui-accordéon
comme une dépendance fait en sorte que cela se produise.
Parce que nous voulons pouvoir mettre notre FAQ Accordéon sur n'importe quelle page / publication, nous allons générer un shortcode. Utiliser un shortcode signifie qu'il suffit de taper [FAQ]
dans n'importe quel post / page de l'éditeur WordPress pour afficher notre FAQ.
add_shortcode ('faq', function () return "Test de code court";);
Nous pouvons obtenir les données de notre type de message personnalisé en utilisant le get_posts ()
une fonction.
numéros
- Ici, vous pouvez limiter le nombre de questions fréquemment posées.commandé par
et ordre
- Nous permet de changer l'ordre des questionsType de poste
- Voici comment nous disons à WordPress de ne récupérer que notre type de message personnaliséadd_shortcode ('faq', function () $ posts = get_posts (array ('numberposts' => 10, 'orderby' => 'menu_order', 'order' => 'ASC', 'post_type' => 'faq' )); // tableau d'objets renvoyés);
/ * exemple * / echo $ posts [0] -> post_content; // affichera la réponse de la première question de la FAQ.
Voici le balisage nécessaire pour l'accordéon jQuery UI:
La question ira ici
La réponse sera dans cette div.
Nous pouvons générer cela en boucle sur la $ posts
tableau.
$ faq
pour stocker le début de notre HTML - nous ouvrons une div
avec un identifiant de wptuts-accordéon
sprintf
au $ faq
variable.sprintf
remplacera % 1 $ s
avec la valeur extraite de $ post-> post_title
et % 2 $ s
avec la valeur renvoyée de $ post-> post_content
$ post-> post_content
à travers wpautop ()
pour s'assurer qu'il s'affiche tel qu'il a été créé dans la zone d'administration.div
et retour $ faq
pour sortir le HTML sur notre page.$ faq = ''; // le conteneur, avant la boucle foreach ($ posts comme $ post) $ faq. = sprintf ((''; // termine en fermant le conteneur return $ faq;% 1 $ s
% 2 $ s'), $ post-> post_title, wpautop ($ post-> post_content)); $ faq. = '
add_shortcode ('faq', function () $ posts = get_posts (array (// Obtient la FAQ Type de message personnalisé. 'numberposts' => 10, 'orderby' => 'menu_order', 'order' => 'ASC', 'post_type' => 'faq',)); $ faq = ''; // Ouvre le conteneur foreach ($ posts en tant que $ post) // Génère le balisage pour chaque question $ faq. = Sprintf ((''; // Ferme le conteneur return $ faq; // retourne le HTML. );% 1 $ s
% 2 $ s'), $ post-> post_title, wpautop ($ post-> post_content)); $ faq. = '
Phew! Si vous en êtes là, bravo, vous y êtes presque! Au moment où nous avons réussi à sortir toutes les données nécessaires pour notre accordéon, tout ce qui reste à faire est de placer ceci dans faq.js:
(function () jQuery ("# wptuts-accordéon"). accordion ();) ();