PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.8.9
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.8.9
4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.5.2 All 199 releases
betterdocs / views / shortcodes / faq-tab.php

faq-tab.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 3.8.9, at views/shortcodes/faq-tab.php

88 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <div
2 <?php echo $wrapper_attr; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- contains attriutes and values together which are required here ?>>
3 <h2 class="<?php echo esc_attr( $faq_heading_class ); ?> betterdocs-faq-section-title">
4 <?php echo esc_html( $faq_heading ); ?>
5 </h2>
6
7 <div class="betterdocs-faq-inner-wrapper">
8 <?php
9 $terms = get_terms( $terms_query_args );
10 $faq_json = '';
11
12 if ( ! is_wp_error( $terms ) ) {
13 $GLOBALS['betterdocs_faq_schema'] = [];
14 if ( $faq_schema ) {
15 $faq_json = [
16 '@context' => 'https://schema.org',
17 '@type' => 'FAQPage',
18 'mainEntity' => []
19 ];
20
21 $GLOBALS['betterdocs_faq_schema_main_entity'] = $faq_json['mainEntity'];
22 }
23
24 echo '<div class="betterdocs-faq-tab-wrapper">';
25 foreach ( $terms as $term ) {
26 if ( $term->count <= 0 ) {
27 continue;
28 }
29 $faq_icon_url = get_term_meta($term->term_id, 'faq_group_icon', true);
30 echo '<div class="betterdocs-faq-tab" data-term-id="' . esc_attr( $term->term_id ) . '">';
31 echo ( ! empty( $faq_icon_url ) ) ? '<img src="'.$faq_icon_url.'" width="24" height="24" class="faq-group-image" />' : '';
32 echo '<span class="faq-tab-title">' . esc_html( $term->name ) . '</span>';
33 echo '</div>';
34 }
35 echo '</div>';
36
37 echo '<div class="betterdocs-faq-list-wrapper">';
38 foreach ( $terms as $term ) {
39 if ( $term->count <= 0 ) {
40 continue;
41 }
42
43 $faq_icon_url = get_term_meta($term->term_id, 'faq_group_icon', true);
44 echo '<div class="betterdocs-faq-tab" data-term-id="' . esc_attr( $term->term_id ) . '">';
45 echo ( ! empty( $faq_icon_url ) ) ? '<img src="'.$faq_icon_url.'" width="24" height="24" class="faq-group-image" />' : '';
46 echo '<span class="faq-tab-title">' . esc_html( $term->name ) . '</span>';
47
48 $faq_markup = '<svg class="betterdocs-faq-iconplus" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
49 <g clip-path="url(#clip0_8028_2975)">
50 <path d="M5.5 7.5L10.5 12.5L15.5 7.5" stroke="#707E95" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
51 </g>
52 <defs>
53 <clipPath id="clip0_8028_2975">
54 <rect width="20" height="20" fill="white" transform="translate(0.5)"/>
55 </clipPath>
56 </defs>
57 </svg>';
58 $faq_markup .= '<svg class="betterdocs-faq-iconminus" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
59 <path d="M15.5 12.5L10.5 7.5L5.5 12.5" stroke="#707E95" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
60 </svg>';
61
62 echo $faq_markup; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
63
64 echo '</div>';
65
66 // faq list
67 echo '<div class="betterdocs-faq-list-content" data-term-id="' . esc_attr( $term->term_id ) . '" style="display: none;">';
68 $view_object->get(
69 'shortcode-parts/faq-list',
70 [
71 'term' => $term,
72 'faq_schema' => $faq_schema,
73 'faq_json' => $faq_schema ? $faq_json['mainEntity'] : ''
74 ]
75 );
76 echo '</div>';
77 }
78 echo '</div>';
79
80 if ( $faq_schema ) {
81 $faq_json['mainEntity'] = $GLOBALS['betterdocs_faq_schema_main_entity'];
82 echo '<script type="application/ld+json">' . wp_json_encode( $faq_json ) . '</script>';
83 }
84 }
85 ?>
86 </div>
87 </div>
88