PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.2.6
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.2.6
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 / toc.php

toc.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 4.2.6, at views/shortcodes/toc.php

47 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /** @var \WPDeveloper\BetterDocs\Shortcodes\ToC $widget */
3 if ( $post !== null ) {
4 // Check if post is password protected and user hasn't provided correct password
5 if ( post_password_required( $post->ID ) ) {
6 // Don't show ToC for password-protected posts until password is provided
7 return;
8 }
9
10 // Process content for special characters without triggering heavy content filters
11 // This prevents memory issues from plugins like WPML while still handling special characters
12 $processed_content = $widget->process_content_for_toc( $post->post_content );
13 $toc_data = $widget->format_toc_data( $processed_content, $htags, $hierarchy );
14 if ( empty( $toc_data->items ) ) {
15 return;
16 }
17 } else {
18 return;
19 }
20
21
22 $collapsible_arrow = '';
23 $wrapper_classes = [ 'betterdocs-toc' ];
24
25 if ( empty( $toc_title ) ) {
26 $toc_title = betterdocs()->settings->get( 'toc_title', __( 'Table of Contents', 'betterdocs' ) );
27 $toc_title = esc_html( stripslashes( $toc_title ) );
28 }
29
30 if ( $collapsible_on_mobile == '1' ) {
31 $wrapper_classes[] = 'collapsible-sm';
32 $collapsible_arrow = "<svg class='angle-icon angle-up' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='angle-up' class='svg-inline--fa fa-angle-up fa-w-10' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'><path fill='currentColor' d='M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z'></path></svg><svg class='angle-icon angle-down' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='angle-down' class='svg-inline--fa fa-angle-down fa-w-10' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'><path fill='currentColor' d='M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z'></path></svg>";
33 }
34
35 if ( $list_number == '1' ) {
36 $wrapper_classes[] = 'toc-list-number';
37 }
38 ?>
39
40 <div class="<?php echo esc_attr( implode( ' ', $wrapper_classes ) ); ?>">
41 <span class="toc-title">
42 <?php echo $toc_title . $collapsible_arrow; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Title Is Escaped Above & Svg's Cannot Be Escaped ?>
43 </span>
44
45 <?php echo $toc_data->print( $toc_data->items, $hierarchy, 1 ); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Already Escaped Above, Svg Is Not Needed For Escaping ?>
46 </div>
47