wp_back/wp-content/plugins/table-of-contents-plus/includes/functions.php
2024-05-20 15:37:46 +03:00

48 lines
1.4 KiB
PHP

<?php
/**
* Returns a HTML formatted string of the table of contents without the surrounding UL or OL
* tags to enable the theme editor to supply their own ID and/or classes to the outer list.
*
* There are three optional parameters you can feed this function with:
*
* - $content is the entire content with headings. If blank, will default to the current $post
*
* - $link is the URL to prefix the anchor with. If provided a string, will use it as the prefix.
* If set to true then will try to obtain the permalink from the $post object.
*
* - $apply_eligibility bool, defaults to false. When set to true, will apply the check to
* see if bit of content has the prerequisites needed for a TOC, eg minimum number of headings
* enabled post type, etc.
*/
function toc_get_index( $content = '', $prefix_url = '', $apply_eligibility = false ) {
global $wp_query, $toc_plus;
$return = '';
$find = [];
$replace = [];
$proceed = true;
if ( ! $content ) {
$post = get_post( $wp_query->post->ID );
$content = wptexturize( $post->post_content );
}
if ( $apply_eligibility ) {
if ( ! $toc_plus->is_eligible() ) {
$proceed = false;
}
} else {
$toc_plus->set_option( [ 'start' => 0 ] );
}
if ( $proceed ) {
$return = $toc_plus->extract_headings( $find, $replace, $content );
if ( $prefix_url ) {
$return = str_replace( 'href="#', 'href="' . $prefix_url . '#', $return );
}
}
return $return;
}