navasena/wp-content/themes/thinkai/includes/functions/functions.php

874 lines
36 KiB
PHP
Raw Permalink Normal View History

2024-07-31 13:12:38 +07:00
<?php
/**
* [thinkai_WSH description]
*
* @return [type] [description]
*/
function thinkai_WSH() {
return \THINKAI\Includes\Classes\Base::instance();
}
/**
* [thinkai_dot description]
*
* @param array $data [description]
*
* @return [type] [description]
*/
function thinkai_dot( $data = array() ) {
$dn = new \THINKAI\Includes\Classes\DotNotation( $data );
return $dn;
}
/**
* [thinkai_meta description].
*
* @param array $data [description]
*
* @return [type] [description]
*/
function thinkai_meta( $key, $id = '' ) {
if ( empty( $id ) ) {
$id = get_the_ID();
}
return ( get_post_meta( $id, $key, true ) ) ? get_post_meta( $id, $key, true ) : '';
}
function thinkaic_app( $class = 'base', $instance = true ) {
$all = array(
'base' => '\THINKAI\Includes\Classes\Base',
'vc' => '\THINKAI\Includes\Classes\Visual_Composer',
'ajax' => '\THINKAI\Includes\Classes\Ajax',
);
$dn = thinkai_dot( $all );
$class = ( $dn->get( $class ) ) ? $dn->get( $class ) : 'base';
if ( $dn->get( $class ) ) {
if ( $instance ) {
return new $dn->get( $class );
} else {
return $dn->get( $classs );
}
} else {
exit( esc_html__( 'No class found', 'thinkai' ) );
}
}
/**
* Use front-page.php when Front page displays is set to a static page.
*
* @since THINKAI 1.0
*
* @param string $template front-page.php.
*
* @return string The template to be used: blank if is_home() is true (defaults to index.php), else $template.
*/
function thinkai_front_page_template( $template ) {
return is_home() ? '' : $template;
}
add_filter( 'frontpage_template', 'thinkai_front_page_template' );
if ( ! function_exists( 'printr' ) ) {
function printr( $arr ) {
echo '<pre>';
print_r( $arr );
echo '</pre>';
exit;
}
}
/**
* [thinkai_template_load description]
*
* @param string $template [description]
* @param array $args [description]
*
* @return [type] [description]
*/
function thinkai_template_load( $templ = '', $args = array() ) {
$template = get_theme_file_path( $templ );
if ( file_exists( $template ) ) {
extract( $args );
unset( $args );
include $template;
}
}
/**
* [thinkai_get_sidebars description]
*
* @param boolean $multi [description].
*
* @return [type] [description]
*/
function thinkai_get_sidebars( $multi = false ) {
global $wp_registered_sidebars;
$sidebars = ! ( $wp_registered_sidebars ) ? get_option( 'wp_registered_sidebars' ) : $wp_registered_sidebars;
if ( $multi ) {
$data[] = array( 'value' => '', 'label' => '' );
}
foreach ( (array) $sidebars as $sidebar ) {
if ( $multi ) {
$data[] = array( 'value' => thinkai_set( $sidebar, 'id' ), 'label' => thinkai_set( $sidebar, 'name' ) );
} else {
$data[ thinkai_set( $sidebar, 'id' ) ] = thinkai_set( $sidebar, 'name' );
}
}
return $data;
}
add_action( 'tgmpa_register', 'thinkai_register_required_plugins' );
/**
* [my_theme_register_required_plugins description]
*
* @return void [description]
*/
function thinkai_register_required_plugins() {
$plugins = array(
array(
'name' => esc_html__( 'Thinkai Plugin', 'thinkai' ),
'slug' => 'thinkai-plugin',
'source' => get_template_directory() . '/includes/thirdparty/plugins/thinkai-plugin.zip',
'required' => true,
'force_deactivation' => false,
'file_path' => ABSPATH . 'wp-content/plugins/thinkai-plugin/thinkai-plugin.php',
),
array(
'name' => esc_html__('Contact Form 7', 'thinkai'),
'slug' => 'contact-form-7',
'required' => true,
),
array(
'name' => esc_html__( 'Elementor', 'thinkai' ),
'slug' => 'elementor',
'required' => true,
),
array(
'name' => esc_html__('Woocommerce', 'thinkai'),
'slug' => 'woocommerce',
'required' => true,
),
array(
'name' => esc_html__('Mailchimp for WordPress', 'thinkai'),
'slug' => 'mailchimp-for-wp',
'required' => true,
),
);
/*Change this to your theme text domain, used for internationalising strings.*/
$theme_text_domain = 'thinkai';
$config = array(
'id' => 'tgmpa',
'default_path' => '',
'menu' => 'tgmpa-install-plugins',
'parent_slug' => 'themes.php',
'capability' => 'edit_theme_options',
'has_notices' => true,
'dismissable' => true,
'dismiss_msg' => '',
'is_automatic' => false,
'message' => '',
);
THINKAI\Includes\Library\tgmpa( $plugins, $config );
}
/**
* [thinkai_logo description]
*
* @return [type] [description]
*/
function thinkai_logo( $logo_type, $image_logo, $logo_dimension, $logo_text, $logo_typography ) {
if ( $logo_type === 'text' ) {
$logo = $logo_text ? $logo_text : '<span>' . esc_html__( 'THINKAI', 'thinkai' ) . '</span>';
$logo_style = $logo_typography;
$logo_the_style = ( thinkai_set( $logo_style, 'font-size' ) ) ? 'font-size:' . thinkai_set( $logo_style, 'font-size' ) . ';' : '';
$logo_the_style .= ( thinkai_set( $logo_style, 'font-family' ) ) ? "font-family:'" . thinkai_set( $logo_style, 'font-family' ) . "';" : '';
$logo_the_style .= ( thinkai_set( $logo_style, 'font-weight' ) ) ? 'font-weight:' . thinkai_set( $logo_style, 'font-weight' ) . ';' : '';
$logo_the_style .= ( thinkai_set( $logo_style, 'line-height' ) ) ? 'line-height:' . thinkai_set( $logo_style, 'line-height' ) . ';' : '';
$logo_the_style .= ( thinkai_set( $logo_style, 'color' ) ) ? 'color:' . thinkai_set( $logo_style, 'color' ) . ';' : '';
$logo_the_style .= ( thinkai_set( $logo_style, 'letter-spacing' ) ) ? 'letter-spacing:' . thinkai_set( $logo_style, 'letter-spacing' ) . ';' : '';
$logo_output = '<a style="' . $logo_the_style . '" href="' . home_url( '/' ) . '" title="' . get_bloginfo( 'name' ) . '">' . wp_kses( $logo, true ) . '</a>';
} else {
$logo_the_style = '';
$logo_image_style = '';
$logo_image_style .= thinkai_set( $logo_dimension, 'width' ) ? ' width:' . thinkai_set( $logo_dimension, 'width' ) . ';' : '';
$logo_image_style .= thinkai_set( $logo_dimension, 'height' ) ? ' height:' . ( thinkai_set( $logo_dimension, 'height' ) ) . ';' : '';
if ( thinkai_set( $image_logo, 'url' ) ) {
$logo_output = '<a href="' . home_url( '/' ) . '" title="' . get_bloginfo( 'name' ) . '"><img src="' . esc_url( thinkai_set( $image_logo, 'url' ) ) . '" alt="'.esc_attr__('logo', 'thinkai').'" style="' . $logo_image_style . '" /></a>';
} else {
$logo_output = '<a href="' . esc_url(home_url('/')) . '" title="' . get_bloginfo( 'name' ) . '"><img src="' . get_template_directory_uri() . '/assets/images/logo.png' . '" alt="'.esc_attr__('logo', 'thinkai').'" style="' . $logo_image_style . '" /></a>';
}
}
return $logo_output;
}
/**
* [thinkai_twitter description]
*
* @param string $post_type [description].
* @param boolean $flip [description].
*
* @return [type] [description]
*/
function thinkai_twitter( $args = array() ) {
$selector = thinkai_set( $args, 'selector' );
$data = thinkai_set( $args, 'data' );
$count = thinkai_set( $args, 'count', 3 );
$screen = thinkai_set( $args, 'screen_name', 'WordPress' );
$settings = array( 'count' => $count, 'screen_name' => $screen );
ob_start(); ?>
jQuery(document).ready(function ($) {
$('<?php echo esc_js( $selector ); ?>').tweets(<?php echo json_encode( $settings ); ?>);
});
<?php $jsOutput = ob_get_contents();
ob_end_clean();
wp_add_inline_script( 'twitter-tweets', $jsOutput );
}
/**
* [thinkai_the_pagination description]
*
* @param array $args [description].
* @param integer $echo [description].
*
* @return [type] [description]
*/
function thinkai_the_pagination() {
if( is_singular() )
return;
global $wp_query;
/** Stop execution if there's only 1 page */
if( $wp_query->max_num_pages <= 1 )
return;
$paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
$max = intval( $wp_query->max_num_pages );
/** Add current page to the array */
if ( $paged >= 1 )
$links[] = $paged;
/** Add the pages around the current page to the array */
if ( $paged >= 3 ) {
$links[] = $paged - 1;
$links[] = $paged - 2;
}
if ( ( $paged + 2 ) <= $max ) {
$links[] = $paged + 2;
$links[] = $paged + 1;
}
echo '<ul class="pagination clearfix">' . "\n";
/** Previous Post Link */
if ( get_previous_posts_link() )
printf( '<li class="prev">%s</li>' . "\n", get_previous_posts_link(__( '<i class="icon-left-arrow1 left"></i> Prev Page', 'thinkai' )) );
/** Link to first page, plus ellipses if necessary */
if ( ! in_array( 1, $links ) ) {
$class = 1 == $paged ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' );
if ( ! in_array( 2, $links ) )
echo '<li>…</li>';
}
/** Link to current page, plus 2 pages in either direction if necessary */
sort( $links );
foreach ( (array) $links as $link ) {
$class = $paged == $link ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
}
/** Link to last page, plus ellipses if necessary */
if ( ! in_array( $max, $links ) ) {
if ( ! in_array( $max - 1, $links ) )
echo '<li>…</li>' . "\n";
$class = $paged == $max ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
}
/** Next Post Link */
if ( get_next_posts_link() )
printf( '<li class="next">%s</li>' . "\n", get_next_posts_link(__( 'Next Page <i class="icon-right-arrow1 right"></i>', 'thinkai' )) );
echo '</ul>' . "\n";
}
function thinkai_the_breadcrumb() {
global $wp_query;
$queried_object = get_queried_object();
$breadcrumb = '';
$delimiter = ' / ';
$before = '<li class="breadcrumb-item">';
$after = '</li>';
if ( ! is_front_page() ) {
$breadcrumb .= $before . '<a href="' . home_url( '/' ) . '">' . esc_html__( 'Home', 'thinkai' ) . ' &nbsp;</a>' . $after;
/** If category or single post */
if ( is_category() ) {
$cat_obj = $wp_query->get_queried_object();
$this_category = get_category( $cat_obj->term_id );
if ( $this_category->parent != 0 ) {
$parent_category = get_category( $this_category->parent );
$breadcrumb .= get_category_parents( $parent_category, true, $delimiter );
}
$breadcrumb .= $before . '<a href="' . get_category_link( get_query_var( 'cat' ) ) . '">' . single_cat_title( '', false ) . '</a>' . $after;
} elseif ( $wp_query->is_posts_page ) {
$breadcrumb .= $before . $queried_object->post_title . $after;
} elseif ( is_tax() ) {
$breadcrumb .= $before . '<a href="' . get_term_link( $queried_object ) . '">' . $queried_object->name . '</a>' . $after;
} elseif ( is_page() ) /** If WP pages */ {
global $post;
if ( $post->post_parent ) {
$anc = get_post_ancestors( $post->ID );
foreach ( $anc as $ancestor ) {
$breadcrumb .= $before . '<a href="' . get_permalink( $ancestor ) . '">' . get_the_title( $ancestor ) . ' &nbsp;</a>' . $after;
}
$breadcrumb .= $before . '' . get_the_title( $post->ID ) . '' . $after;
} else {
$breadcrumb .= $before . '' . get_the_title() . '' . $after;
}
} elseif ( is_singular() ) {
if ( $category = wp_get_object_terms( get_the_ID(), array( 'category', 'location', 'tax_feature' ) ) ) {
if ( ! is_wp_error( $category ) ) {
$breadcrumb .= $before . '<a href="' . get_term_link( thinkai_set( $category, '0' ) ) . '">' . thinkai_set( thinkai_set( $category, '0' ), 'name' ) . '&nbsp;</a>' . $after;
$breadcrumb .= $before . '' . get_the_title() . '' . $after;
} else {
$breadcrumb .= $before . '' . get_the_title() . '' . $after;
}
} else {
$breadcrumb .= $before . '' . get_the_title() . '' . $after;
}
} elseif ( is_tag() ) {
$breadcrumb .= $before . '<a href="' . get_term_link( $queried_object ) . '">' . single_tag_title( '', false ) . '</a>' . $after;
} /**If tag template*/
elseif ( is_day() ) {
$breadcrumb .= $before . '<a href="#">' . esc_html__( 'Archive for ', 'thinkai' ) . get_the_time( 'F jS, Y' ) . '</a>' . $after;
} /** If daily Archives */
elseif ( is_month() ) {
$breadcrumb .= $before . '<a href="' . get_month_link( get_the_time( 'Y' ), get_the_time( 'm' ) ) . '">'. get_the_time( 'F' ) . '</a>&nbsp;&nbsp;' . $after;
$breadcrumb .= $before . '<a href="' . get_year_link( get_the_time( 'Y' ) ) . '">'. get_the_time( 'Y' ) . '</a>' . $after;
} /* If montly Archives /
elseif ( is_year() ) {
$breadcrumb .= $before . '<a href="' . get_year_link( get_the_time( 'Y' ) ) . '">' . esc_html__( 'Archive for ', 'thinkai' ) . get_the_time( 'Y' ) . '</a>' . $after;
} /** If year Archives */
elseif ( is_author() ) {
$breadcrumb .= $before . '<a href="' . esc_url( get_author_posts_url( get_the_author_meta( "ID" ) ) ) . '">' . esc_html__( 'Archive for ', 'thinkai' ) . get_the_author() . '</a>' . $after;
} /** If author Archives */
elseif ( is_search() ) {
$breadcrumb .= $before . '' . esc_html__( 'Search Results for ', 'thinkai' ) . get_search_query() . '' . $after;
} /** if search template */
elseif ( is_404() ) {
$breadcrumb .= $before . '' . esc_html__( '404 - Not Found', 'thinkai' ) . '' . $after;
/** if search template */
} elseif ( is_post_type_archive( 'product' ) ) {
$shop_page_id = wc_get_page_id( 'shop' );
if ( get_option( 'page_on_front' ) !== $shop_page_id ) {
$shop_page = get_post( $shop_page_id );
$_name = wc_get_page_id( 'shop' ) ? get_the_title( wc_get_page_id( 'shop' ) ) : '';
if ( ! $_name ) {
$product_post_type = get_post_type_object( 'product' );
$_name = $product_post_type->labels->singular_name;
}
if ( is_search() ) {
$breadcrumb .= $before . '<a href="' . get_post_type_archive_link( 'product' ) . '">' . $_name . '</a>' . $delimiter . esc_html__( 'Search results for &ldquo;', 'thinkai' ) . get_search_query() . '&rdquo;' . $after;
} elseif ( is_paged() ) {
$breadcrumb .= $before . '<a href="' . get_post_type_archive_link( 'product' ) . '">' . $_name . '</a>' . $after;
} else {
$breadcrumb .= $before . $_name . $after;
}
}
} else {
$breadcrumb .= $before . '<a href="' . get_permalink() . '">' . get_the_title() . '</a>' . $after;
}
/** Default value */
}
return $breadcrumb;
}
function thinkai_the_title( $template ) {
global $wp_query;
$queried_object = get_queried_object();
$title = '';
/** If category or single post */
if ( $template == 'category' || $template == 'tag' || $template == 'galleryCat' ) {
$current_obj = $wp_query->get_queried_object();
$this_category = get_category( $current_obj->term_id );
$title .= $current_obj->name;
} elseif ( is_home() ) {
$title .= esc_html__( 'Home Page ', 'thinkai' );
} elseif ( $template == 'page' || $template == 'post' || $template == 'VC' || $template == 'blog' || $template == 'courseDetail' || $template == 'team' || $template == 'services' || $template == 'events' || $template == 'gallery' || $template == 'shop' || $template == 'product' ) {
$title .= get_the_title();
} elseif ( $template == 'archive' and is_day() ) {
$title .= esc_html__( 'Archive for ', 'thinkai' ) . get_the_time( 'F jS, Y' );
} elseif ( $template == 'archive' and is_month() ) {
$title .= esc_html__( 'Archive for ', 'thinkai' ) . get_the_time( 'F, Y' );
} elseif ( $template == 'archive' and is_year() ) {
$title .= esc_html__( 'Archive for ', 'thinkai' ) . get_the_time( 'Y' );
} elseif ( $template == 'author' ) {
$title .= esc_html__( 'Archive for ', 'thinkai' ) . get_the_author();
} elseif ( $template == 'search' ) {
$title .= esc_html__( 'Search Results for ', 'thinkai' ) . '"' . get_search_query() . '"';
} elseif ( $template == '404' ) {
$title .= esc_html__( '404 Page Not Found', 'thinkai' );
}
return $title;
}
/**
* [thinkai_list_comments description]
*
* @param [type] $comment [description].
* @param [type] $args [description].
* @param [type] $depth [description].
*
* @return void [description]
*/
function thinkai_list_comments( $comment, $args, $depth ) {
$allowed_html = wp_kses_allowed_html( 'post' );
wp_enqueue_script( 'comment-reply' );
$GLOBALS['comment'] = $comment;
$like = (int) get_comment_meta( $comment->comment_ID, 'like_it', true ); ?>
<div class="thinkai-comment-item">
<div class="single-comment">
<div <?php comment_class('comment');?> id="comment-<?php comment_ID(); ?>">
<div class="inner">
<div class="single-comment-box">
<div class="img-holder">
<?php echo wp_kses( get_avatar( $comment, 70 ), true ); ?>
</div>
<div class="text-holder">
<div class="top">
<h3><?php echo wp_kses( get_comment_author(), true ); ?>,</h3>
<p> <?php comment_date('F d, Y'); ?></p>
</div>
<div class="text">
<?php comment_text(); ?>
</div>
<div class="btn-box">
<?php
comment_reply_link( array_merge($args, array(
'reply_text' => '<span class="icon-arrow-1"></span>' . esc_html( 'Reply', 'thinkai' ).'',
'depth' => $depth,
'max_depth' => $args['max_depth'],
)
)); ?>
</div>
</div>
</div>
</div>
</div>
</div>
<?php
}
function thinkai_comment_reply_link_class( $class ) {
$class = str_replace( "class='comment-reply-link", "class='comment-reply-link reply-btn", $class );
return $class;
}
add_filter( 'comment_reply_link', 'thinkai_comment_reply_link_class' );
/**
* [comment_form description]
*
* @param array $args [description].
* @param [type] $post_id [description].
*
* @return void [description]
*/
function thinkai_comment_form( $args = array(), $post_id = null ) {
if ( null === $post_id ) {
$post_id = get_the_ID();
}
$allowed_html = wp_kses_allowed_html( 'post' );
$commenter = wp_get_current_commenter();
$user = wp_get_current_user();
$user_identity = $user->exists() ? $user->display_name : '';
$args = wp_parse_args( $args );
if ( ! isset( $args['format'] ) ) {
$args['format'] = current_theme_supports( 'html5', 'comment-form' ) ? 'html5' : 'xhtml';
}
$req = get_option( 'require_name_email' );
$aria_req = ( $req ? " aria-required='true'" : '' );
$html_req = ( $req ? " required='required'" : '' );
$html5 = 'html5' === $args['format'];
$comment_field_class = is_user_logged_in() ? 'col-sm-12' : 'col-sm-6';
$fields = array(
'author' => '<div class="col-lg-6 col-md-6 col-sm-12"><div class="input-box"><input id="author" class="input_style__primary" name="author" placeholder="' . esc_attr__( 'Name', 'thinkai' ) . '" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30" maxlength="245"' . $aria_req . $html_req . ' /></div></div>',
'email' => '<div class="col-lg-6 col-md-6 col-sm-12"><div class="input-box"><input id="email" class="input_style__primary" placeholder="' . esc_attr__( 'Email', 'thinkai' ) . '" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30" maxlength="100"/></div></div>',
);
$required_text = sprintf( ' ' . esc_html__( '%s', 'thinkai' ), '' );
/**
* Filters the default comment form fields.
*
* @since 3.0.0
*
* @param array $fields The default comment fields.
*/
$fields = apply_filters( 'comment_form_default_fields', $fields );
$defaults = array(
'fields' => $fields,
'comment_field' => '<div class="col-lg-12 col-md-12 col-sm-12"><div class="input-box input-box--sytle1"><textarea placeholder="' . esc_attr__( 'Type Comment here', 'thinkai' ) . '" id="comment" class="input_style__primary" name="comment" rows="7" required="required"></textarea></div></div>',
/** This filter is documented in wp-includes/link-template.php */
'must_log_in' => '<div class="log-in-text"><p class="must-log-in">' . sprintf(
/* translators: %s: login URL */
esc_html__( 'You must be <a href="%s">logged in</a> to post a comment.', 'thinkai' ),
wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) )
) . '</p></div>',
/** This filter is documented in wp-includes/link-template.php */
'logged_in_as' => '<div class="col-lg-12 col-md-12 col-sm-12"><p class="logged-in-as">' . sprintf(
/* translators: 1: edit user link, 2: accessibility text, 3: user name, 4: logout URL */
'<a href="%1$s" aria-label="%2$s">' . esc_html__( 'Logged in as', 'thinkai' ) . ' %3$s</a>. <a href="%4$s">' . esc_html__( 'Log out?', 'thinkai' ) . '</a>',
get_edit_user_link(),
/* translators: %s: user name */
esc_attr( sprintf( esc_html__( 'Logged in as %s. Edit your profile.', 'thinkai' ), $user_identity ) ),
$user_identity,
wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) )
) . '</p></div>',
'comment_notes_before' => '',
'comment_notes_after' => '',
'action' => site_url( '/wp-comments-post.php' ),
'id_form' => 'add-comment-form',
'id_submit' => 'submit',
'class_form' => 'te-custom__form',
'class_submit' => 'submit',
'name_submit' => 'submit',
'title_reply' => esc_html__( 'Leave A Comment', 'thinkai' ),
'title_reply_to' => esc_html__( 'Leave a Reply to %s', 'thinkai' ),
'title_reply_before' => '<div class="inner-title"><h2>',
'title_reply_after' => '</h2></div>',
'cancel_reply_before' => ' <small>',
'cancel_reply_after' => '</small>',
'cancel_reply_link' => esc_html__( 'Cancel reply', 'thinkai' ),
'label_submit' => esc_html__( 'Post a Comment', 'thinkai' ),
'submit_button' => '<button name="%1$s" type="submit" id="%2$s" class="%3$s btn-one" value="%4$s"><span class="txt">Post Comment<i class="icon-next1"></i></span></button>',
'submit_field' => '<div class="button-box message-btn">%1$s %2$s</div>',
'format' => 'xhtml',
);
/**
* Filters the comment form default arguments.
* Use {@see 'comment_form_default_fields'} to filter the comment fields.
*
* @since 3.0.0
*
* @param array $defaults The default comment form arguments.
*/
$args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) );
$args = array_merge( $defaults, $args );
if ( comments_open( $post_id ) ) : ?>
<?php
/**
* Fires before the comment form.
*
* @since 3.0.0
*/
do_action( 'comment_form_before' );
?>
<div id="respond" class="comment-form-area add-comment-box">
<?php
echo wp_kses( $args['title_reply_before'], $allowed_html );
comment_form_title( $args['title_reply'], $args['title_reply_to'] );
echo wp_kses( $args['cancel_reply_before'], $allowed_html );
cancel_comment_reply_link( $args['cancel_reply_link'] );
echo wp_kses( $args['cancel_reply_after'], $allowed_html );
echo wp_kses( $args['title_reply_after'], $allowed_html );
if ( get_option( 'comment_registration' ) && ! is_user_logged_in() ) :
echo wp_kses( $args['must_log_in'], $allowed_html );
/**
* Fires after the HTML-formatted 'must log in after' message in the comment form.
*
* @since 3.0.0
*/
do_action( 'comment_form_must_log_in_after' );
else : ?>
<div class="form-inner">
<form action="<?php echo esc_url( $args['action'] ); ?>" method="post" id="<?php echo esc_attr( $args['id_form'] ); ?>" class="<?php echo esc_attr( $args['class_form'] ); ?>" <?php echo wp_kses( $html5, $allowed_html ) ? ' novalidate' : ''; ?>>
<div class="row clearfix">
<?php
/**
* Fires at the top of the comment form, inside the form tag.
*
* @since 3.0.0
*/
do_action( 'comment_form_top' );
if ( is_user_logged_in() ) :
/**
* Filters the 'logged in' message for the comment form for display.
*
* @since 3.0.0
*
* @param string $args_logged_in The logged-in-as HTML-formatted message.
* @param array $commenter An array containing the comment author's
* username, email, and URL.
* @param string $user_identity If the commenter is a registered user,
* the display name, blank otherwise.
*/
echo apply_filters( 'comment_form_logged_in', $args['logged_in_as'], $commenter, $user_identity );
/**
* Fires after the is_user_logged_in() check in the comment form.
*
* @since 3.0.0
*
* @param array $commenter An array containing the comment author's
* username, email, and URL.
* @param string $user_identity If the commenter is a registered user,
* the display name, blank otherwise.
*/
do_action( 'comment_form_logged_in_after', $commenter, $user_identity );
else :
echo wp_kses( $args['comment_notes_before'], $allowed_html );
endif;
$comment_fields = (array) $args['fields'] + array( 'comment' => $args['comment_field'] );
/**
* Filters the comment form fields, including the textarea.
*
* @since 4.4.0
*
* @param array $comment_fields The comment fields.
*/
$comment_fields = apply_filters( 'comment_form_fields', $comment_fields );
$comment_field_keys = array_diff( array_keys( $comment_fields ), array( 'comment' ) );
$first_field = reset( $comment_field_keys );
$last_field = end( $comment_field_keys ); ?>
<?php foreach ( $comment_fields as $name => $field ) {
if ( 'comment' === $name ) {
/**
* Filters the content of the comment textarea field for display.
*
* @since 3.0.0
*
* @param string $args_comment_field The content of the comment textarea field.
*/
echo apply_filters( 'comment_form_field_comment', $field );
echo wp_kses( $args['comment_notes_after'], $allowed_html );
} elseif ( ! is_user_logged_in() ) {
if ( $first_field === $name ) {
/**
* Fires before the comment fields in the comment form, excluding the textarea.
*
* @since 3.0.0
*/
do_action( 'comment_form_before_fields' );
}
/**
* Filters a comment form field for display.
* The dynamic portion of the filter hook, `$name`, refers to the name
* of the comment form field. Such as 'author', 'email', or 'url'.
*
* @since 3.0.0
*
* @param string $field The HTML-formatted output of the comment form field.
*/
echo apply_filters( "comment_form_field_{$name}", $field ) . "\n";
if ( $last_field === $name ) {
/**
* Fires after the comment fields in the comment form, excluding the textarea.
*
* @since 3.0.0
*/
do_action( 'comment_form_after_fields' );
}
}
} ?>
<?php $submit_button = sprintf(
$args['submit_button'],
esc_attr( $args['name_submit'] ),
esc_attr( $args['id_submit'] ),
esc_attr( $args['class_submit'] ),
esc_attr( $args['label_submit'] )
);
/**
* Filters the submit button for the comment form to display.
*
* @since 4.2.0
*
* @param string $submit_button HTML markup for the submit button.
* @param array $args Arguments passed to `comment_form()`.
*/
$submit_button = apply_filters( 'comment_form_submit_button', $submit_button, $args );
$submit_field = sprintf(
$args['submit_field'],
$submit_button,
get_comment_id_fields( $post_id )
);
/**
* Filters the submit field for the comment form to display.
* The submit field includes the submit button, hidden fields for the
* comment form, and any wrapper markup.
*
* @since 4.2.0
*
* @param string $submit_field HTML markup for the submit field.
* @param array $args Arguments passed to comment_form().
*/
echo apply_filters( 'comment_form_submit_field', $submit_field, $args );
/**
* Fires at the bottom of the comment form, inside the closing </form> tag.
*
* @since 1.5.0
*
* @param int $post_id The post ID.
*/
do_action( 'comment_form', $post_id );
?>
</div>
</form>
</div>
<?php endif; ?>
</div>
<?php
/**
* Fires after the comment form.
*
* @since 3.0.0
*/
do_action( 'comment_form_after' );
else :
/**
* Fires after the comment form if comments are closed.
*
* @since 3.0.0
*/
do_action( 'comment_form_comments_closed' );
endif;
}
if( ! function_exists('thinkai_filesystem') ) {
/**
* [fixkar_filesystem description]
* @return [type] [description]
*/
function thinkai_filesystem() {
if( ! function_exists('require_filesystem_credentials')) {
require_once ABSPATH . 'wp-admin/includes/file.php';
}
/* you can safely run request_filesystem_credentials() without any issues and don't need to worry about passing in a URL */
$creds = request_filesystem_credentials(esc_url(home_url('/')), '', false, false, array());
/* initialize the API */
if ( ! WP_Filesystem($creds) ) {
/* any problems and we exit */
return false;
}
global $wp_filesystem;
/* do our file manipulations below */
return $wp_filesystem;
}
}
if( ! function_exists('thinkai_get_server') ) {
function thinkai_get_server($key = '', $value = '') {
if( function_exists('thinkai_server') ) {
return thinkai_server($key, $value);
}
return [];
}
}
function thinkai_body_classes( $classes ) {
$classes[] = 'menu-layer';
return $classes;
}
add_filter( 'body_class','thinkai_body_classes' );
function thinkai_custom_fonts_load( $custom_font ) {
$custom_style = '';
$pathinfo = pathinfo($custom_font);
if ( $filename = thinkai_set( $pathinfo, 'filename' ) ) {
$custom_style .= '@font-face{
font-family:"'.$filename.'";';
$extensions = array( 'eot', 'woff', 'woff2', 'ttf', 'svg' );
$count = 0;
foreach( $extensions as $extension ) {
$file_path = get_template_directory() . '/assets/css/custom-fonts/' . $filename . '.' . $extension;
$file_url = get_template_directory_uri() . '/assets/css/custom-fonts/' . $filename . '.' . $extension;
if ( file_exists( $file_path ) ) {
$format = $extension;
if ( $extension === 'eot' ) {
$format = 'embedded-opentype';
}
if ( $extension === 'ttf' ) {
$format = 'truetype';
}
$terminated = ( $count > 0 ) ? ',' : '';
$custom_style .= $terminated . 'src:url("'.$file_url.'") format("'.$format.'")';
$count++;
}
}
$custom_style .= ';}';
}
return $custom_style;
}
/**
* Add Flaticon existing font library
*
* @since 0.0.1
*/
if( ! function_exists('thinkai_el_flat_icon') ) {
function thinkai_el_flat_icon($args) {
$args['icomoon'] = [
'name' => 'icomoon',
'label' => esc_html__( 'Icomoon Icons', 'thinkai' ),
'url' => get_template_directory_uri() . '/assets/vendors/thm-icons/style.css',
'enqueue' => [ get_template_directory_uri() . '/assets/vendors/thm-icons/style.css' ],
'prefix' => 'icon ',
'labelIcon' => 'icon-packs',
'ver' => '1.0',
'fetchJson' => get_template_directory_uri() . '/assets/js/icomoon.js',
'native' => true,
];
return $args;
}
}
add_filter( 'elementor/icons_manager/native', 'thinkai_el_flat_icon' );
function thinkai_trim( $text, $len, $more = null )
{
$text = strip_shortcodes( $text );
$text = apply_filters( 'the_content', $text );
$text = str_replace(']]>', ']]&gt;', $text);
$excerpt_length = apply_filters( 'excerpt_length', $len );
$excerpt_more = apply_filters( 'excerpt_more', ' ' . '[&hellip;]' );
$excerpt_more = ( $more ) ? $more : ' ...';
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
return $text;
}