<?php /** * Adds custom classes to the array of body classes. * * @param array $classes Classes for the body element. * * @return array */ function shapely_body_classes( $classes ) { // Adds a class of group-blog to blogs with more than 1 published author. if ( is_multi_author() ) { $classes[] = 'group-blog'; } // Adds a class of hfeed to non-singular pages. if ( ! is_singular() ) { $classes[] = 'hfeed'; } if ( get_theme_mod( 'shapely_sidebar_position' ) == 'pull-right' ) { $classes[] = 'has-sidebar-left'; } elseif ( get_theme_mod( 'shapely_sidebar_position' ) == 'no-sidebar' ) { $classes[] = 'has-no-sidebar'; } elseif ( get_theme_mod( 'shapely_sidebar_position' ) == 'full-width' ) { $classes[] = 'has-full-width'; } else { $classes[] = 'has-sidebar-right'; } return $classes; } add_filter( 'body_class', 'shapely_body_classes' ); /** * Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link. * * @param array $args Configuration arguments. * * @return array */ function shapely_page_menu_args( $args ) { $args['show_home'] = true; return $args; } add_filter( 'wp_page_menu_args', 'shapely_page_menu_args' ); // Mark Posts/Pages as Untiled when no title is used add_filter( 'the_title', 'shapely_title' ); function shapely_title( $title ) { if ( '' == $title ) { return esc_html__( 'Untitled', 'shapely' ); } else { return $title; } } /** * Password protected post form using Boostrap classes */ add_filter( 'the_password_form', 'shapely_custom_password_form' ); function shapely_custom_password_form() { global $post; $label = 'pwbox-' . ( empty( $post->ID ) ? rand() : $post->ID ); $o = '<form class="protected-post-form" action="' . get_option( 'siteurl' ) . '/wp-login.php?action=postpass" method="post"> <div class="row"> <div class="col-lg-10"> <p>' . esc_html__( 'This post is password protected. To view it please enter your password below:', 'shapely' ) . '</p> <label for="' . esc_attr( $label ) . '">' . esc_html__( 'Password:', 'shapely' ) . ' </label> <div class="input-group"> <input class="form-control" value="' . esc_attr( get_search_query() ) . '" name="post_password" id="' . esc_attr( $label ) . '" type="password"> <span class="input-group-btn"><button type="submit" class="btn btn-default" name="submit" id="searchsubmit" value="' . esc_attr__( 'Submit', 'shapely' ) . '">' . esc_html__( 'Submit', 'shapely' ) . '</button> </span> </div> </div> </div> </form>'; return $o; } // Add Bootstrap classes for table add_filter( 'the_content', 'shapely_add_custom_table_class' ); function shapely_add_custom_table_class( $content ) { return preg_replace( '/(<table) ?(([^>]*)class="([^"]*)")?/', '$1 $3 class="$4 table table-hover" ', $content ); } if ( ! function_exists( 'shapely_header_menu' ) ) : /** * Header menu (should you choose to use one) */ function shapely_header_menu() { // display the WordPress Custom Menu if available wp_nav_menu( array( 'menu_id' => 'menu', 'theme_location' => 'primary', 'depth' => 0, 'container' => 'div', 'container_class' => 'collapse navbar-collapse navbar-ex1-collapse', 'menu_class' => 'menu', 'fallback_cb' => 'Wp_Bootstrap_Navwalker::fallback', 'walker' => new Wp_Bootstrap_Navwalker(), ) ); } /* end header menu */ endif; /** * function to show the footer info, copyright information */ function shapely_footer_info() { printf( esc_html__( 'Theme by %1$s Powered by %2$s', 'shapely' ), '<a href="https://colorlib.com/" target="_blank" rel="nofollow noopener" title="Colorlib">Colorlib</a>', '<a href="http://wordpress.org/" target="_blank" title="WordPress.org">WordPress</a>' ); } if ( ! function_exists( 'shapely_get_theme_options' ) ) { /** * Get information from Theme Options and add it into wp_head */ function shapely_get_theme_options() { echo '<style type="text/css">'; if ( get_theme_mod( 'link_color' ) ) { echo 'a, .image-bg a, .contact-section .social-icons li a, a:visited, .footer .footer-credits a, .post-content .post-meta li a, .post-content .shapely-category a, .module.widget-handle i {color:' . esc_attr( get_theme_mod( 'link_color' ) ) . ' }'; } if ( get_theme_mod( 'link_hover_color' ) ) { echo 'a:hover, a:active, a:focus, .post-title a:hover, .post-title a:focus, .image-bg a:hover, .image-bg a:focus, .contact-section .social-icons li a:hover, .contact-section .social-icons li a:focus, .footer .footer-credits a:hover, .footer .footer-credits a:focus, .post-content .post-meta li a:hover, .post-content .post-meta li a:focus, .widget.widget_recent_entries ul li a:focus, .widget.widget_recent_entries ul li a:hover, .widget.widget_recent_comments ul li .comment-author-link a:focus, .widget.widget_recent_comments ul li .comment-author-link a:hover, .widget.widget_archive > div ul li a:focus, .widget.widget_archive > div ul li a:hover, .widget.widget_archive ul li a:focus, .widget.widget_archive ul li a:hover, .widget.widget_categories > div ul li a:focus, .widget.widget_categories > div ul li a:hover, .widget.widget_categories ul li a:focus, .widget.widget_categories ul li a:hover, .widget.widget_meta > div ul li a:focus, .widget.widget_meta > div ul li a:hover, .widget.widget_meta ul li a:focus, .widget.widget_meta ul li a:hover, .widget.widget_pages > div ul li a:focus, .widget.widget_pages > div ul li a:hover, .widget.widget_pages ul li a:focus, .widget.widget_pages ul li a:hover, .widget.widget_nav_menu > div ul li a:focus, .widget.widget_nav_menu > div ul li a:hover, .widget.widget_nav_menu ul li a:focus, .widget.widget_nav_menu ul li a:hover, .widget.widget_nav_menu .menu > li a:focus, .widget.widget_nav_menu .menu > li a:hover, .widget.widget_tag_cloud a:focus, .widget.widget_tag_cloud a:hover, .widget_product_categories ul.product-categories li a:hover, .widget_product_categories ul.product-categories li a:focus, .widget_product_tag_cloud .tagcloud a:hover, .widget_product_tag_cloud .tagcloud a:focus, .widget_products .product_list_widget a:hover, .widget_products .product_list_widget a:focus, .woocommerce.widget ul.cart_list li a:hover, .woocommerce.widget ul.cart_list li a:focus, .woocommerce.widget ul.product_list_widget li a:hover, .woocommerce.widget ul.product_list_widget li a:focus, .woocommerce .widget_layered_nav_filters ul li a:hover, .woocommerce .widget_layered_nav_filters ul li a:focus, .woocommerce .widget_layered_nav ul li a:hover, .woocommerce .widget_layered_nav ul li a:focus, .main-navigation .menu > li > ul li:hover > a, .main-navigation .menu > li > ul li:focus > a, .main-navigation .menu > li > ul .dropdown:hover:after, .main-navigation .menu > li > ul .dropdown:focus:after, .main-navigation .menu li a:focus, .main-navigation .menu li:focus > a, .main-navigation .menu > li > ul li a:focus, .post-content .shapely-category a:hover, .post-content .shapely-category a:focus, .main-navigation .menu li:hover > a, .main-navigation .menu li:focus > a, .main-navigation .menu > li:hover:after, .main-navigation .menu > li:focus-within:after, .bg-dark .social-list a:hover, .bg-dark .social-list a:focus, .shapely-social .shapely-social-icon:hover, .shapely-social .shapely-social-icon:focus { color: ' . esc_attr( get_theme_mod( 'link_hover_color' ) ) . ';}'; } if ( get_theme_mod( 'button_color' ) ) { echo '.btn-filled, .btn-filled:visited, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .video-widget .video-controls button, input[type="submit"], button[type="submit"], .post-content .more-link { background:' . esc_attr( get_theme_mod( 'button_color' ) ) . ' !important; border: 2px solid ' . esc_attr( get_theme_mod( 'button_color' ) ) . ' !important;}'; echo '.shapely_home_parallax > section:not(.image-bg) .btn-white { color:' . esc_attr( get_theme_mod( 'button_color' ) ) . ' !important; border: 2px solid' . esc_attr( get_theme_mod( 'button_color' ) ) . ' !important; }'; } if ( get_theme_mod( 'button_hover_color' ) ) { echo '.btn-filled:hover, .btn-filled:focus, .woocommerce #respond input#submit.alt:hover, .woocommerce #respond input#submit.alt:focus, .woocommerce a.button.alt:hover, .woocommerce a.button.alt:focus, .woocommerce button.button.alt:hover, .woocommerce button.button.alt:focus, .woocommerce input.button.alt:hover, .woocommerce input.button.alt:focus, .woocommerce #respond input#submit:hover, .woocommerce #respond input#submit:focus, .woocommerce a.button:hover, .woocommerce a.button:focus, .woocommerce button.button:hover, .woocommerce button.button:focus, .woocommerce input.button:hover, .woocommerce input.button:focus, .video-widget .video-controls button:hover, .video-widget .video-controls button:focus, input[type="submit"]:hover, input[type="submit"]:focus, button[type="submit"]:hover, button[type="submit"]:focus, .post-content .more-link:hover, .post-content .more-link:focus, .btn:not(.btn-white):hover, .btn:not(.btn-white):focus, .button:not(.btn-white):hover, .button:not(.btn-white):focus { background: ' . esc_attr( get_theme_mod( 'button_hover_color' ) ) . ' !important; border: 2px solid' . esc_attr( get_theme_mod( 'button_hover_color' ) ) . ' !important;}'; echo '.shapely_home_parallax > section:not(.image-bg) .btn-white:hover, .shapely_home_parallax > section:not(.image-bg) .btn-white:focus, .pagination span:not( .dots ), .pagination a:hover, .pagination a:focus, .woocommerce-pagination ul.page-numbers span.page-numbers, .woocommerce nav.woocommerce-pagination ul li a:focus, .woocommerce nav.woocommerce-pagination ul li a:hover, .woocommerce nav.woocommerce-pagination ul li span.current { background-color: ' . esc_attr( get_theme_mod( 'button_hover_color' ) ) . ' !important; border-color: ' . esc_attr( get_theme_mod( 'button_hover_color' ) ) . ' !important;color: #fff !important; }'; echo '.widget.widget_search .search-form > input#s:hover, .widget.widget_search .search-form > input#s:focus, .widget.widget_calendar #wp-calendar td:not(.pad):not(#next):not(#prev)#today, .widget_product_search .woocommerce-product-search > input.search-field:hover, .widget_product_search .woocommerce-product-search > input.search-field:focus, .widget.widget_search input[type="text"]:focus + button[type="submit"].searchsubmit, .widget.widget_search input[type="text"]:hover + button[type="submit"].searchsubmit, textarea:hover, textarea:focus, input[type="text"]:hover, input[type="search"]:hover, input[type="email"]:hover, input[type="tel"]:hover, input[type="text"]:focus, input[type="search"]:focus, input[type="email"]:focus, input[type="tel"]:focus, .widget.widget_product_search input[type="text"]:focus + button[type="submit"].searchsubmit, .widget.widget_product_search input[type="text"]:hover + button[type="submit"].searchsubmit { border-color: ' . esc_attr( get_theme_mod( 'button_hover_color' ) ) . ' !important }'; echo '.widget.widget_calendar #wp-calendar > caption:after, .widget.widget_calendar #wp-calendar td:not(.pad):not(#next):not(#prev)#today:hover, .widget.widget_calendar #wp-calendar td:not(.pad):not(#next):not(#prev)#today:focus { background-color: ' . esc_attr( get_theme_mod( 'button_hover_color' ) ) . ' }'; echo '.widget.widget_search input[type="text"]:focus + button[type="submit"].searchsubmit, .widget.widget_search input[type="text"]:hover + button[type="submit"].searchsubmit, .widget.widget_product_search input[type="text"]:focus + button[type="submit"].searchsubmit, .widget.widget_product_search input[type="text"]:hover + button[type="submit"].searchsubmit, .image-bg .text-slider .flex-direction-nav li a:focus:before { color: ' . esc_attr( get_theme_mod( 'button_hover_color' ) ) . ' }'; } echo '</style>'; } }// End if(). add_action( 'wp_head', 'shapely_get_theme_options', 10 ); /** * Add Bootstrap thumbnail styling to images with captions * Use <figure> and <figcaption> * * @link http://justintadlock.com/archives/2011/07/01/captions-in-wordpress */ function shapely_caption( $output, $attr, $content ) { if ( is_feed() ) { return $output; } $defaults = array( 'id' => 'shapely_caption_' . rand( 1, 192282 ), 'align' => 'alignnone', 'width' => '', 'caption' => '', ); $attr = shortcode_atts( $defaults, $attr ); // If the width is less than 1 or there is no caption, return the content wrapped between the [caption] tags if ( $attr['width'] < 1 || empty( $attr['caption'] ) ) { return $content; } $output = '<figure id="' . esc_attr( $attr['id'] ) . '" class="thumbnail wp-caption ' . esc_attr( $attr['align'] ) . ' style="width: ' . ( esc_attr( $attr['width'] ) + 10 ) . 'px">'; $output .= do_shortcode( $content ); $output .= '<figcaption class="caption wp-caption-text">' . wp_kses_post( $attr['caption'] ) . '</figcaption>'; $output .= '</figure>'; return $output; } add_filter( 'img_caption_shortcode', 'shapely_caption', 10, 3 ); /** * Adds the URL to the top level navigation menu item */ function shapely_add_top_level_menu_url( $atts, $item, $args ) { if ( ! wp_is_mobile() && isset( $args->has_children ) && $args->has_children ) { $atts['href'] = ! empty( $item->url ) ? esc_url( $item->url ) : ''; } return $atts; } add_filter( 'nav_menu_link_attributes', 'shapely_add_top_level_menu_url', 99, 3 ); /** * Makes the top level navigation menu item clickable */ function shapely_make_top_level_menu_clickable() { if ( ! wp_is_mobile() ) { ?> <script type="text/javascript"> jQuery( document ).ready( function( $ ) { if ( $( window ).width() >= 767 ) { $( '.navbar-nav > li.menu-item > a' ).click( function() { window.location = $( this ).attr( 'href' ); } ); } } ); </script> <?php } } add_action( 'wp_footer', 'shapely_make_top_level_menu_clickable', 1 ); /* * Add Read More button to post archive */ function shapely_excerpt_more( $more ) { return '<div><a class="btn-filled btn" href="' . esc_url( get_the_permalink() ) . '" title="' . the_title_attribute( array( 'echo' => false, ) ) . '">' . esc_html_x( 'Read More', 'Read More', 'shapely' ) . '</a></div>'; } add_filter( 'excerpt_more', 'shapely_excerpt_more' ); /* * Pagination */ if ( ! function_exists( 'shapely_pagination' ) ) { function shapely_pagination() { ?> <div class="text-center"> <nav class="pagination"> <?php the_posts_pagination( array( 'mid_size' => 2, 'prev_text' => '<icon class="fa fa-angle-left"></icon>', 'next_text' => '<icon class="fa fa-angle-right"></icon>', ) ); ?> </nav> </div> <?php } } /* * Search Widget */ function shapely_search_form( $form ) { $form = '<form role="search" method="get" id="searchform" class="search-form" action="' . esc_url( home_url( '/' ) ) . '" > <label class="screen-reader-text" for="s">' . esc_html__( 'Search for:', 'shapely' ) . '</label> <input type="text" placeholder="' . esc_html__( 'Type Here', 'shapely' ) . '" value="' . esc_attr( get_search_query() ) . '" name="s" id="s" /> <button type="submit" class="searchsubmit"><i class="fa fa-search" aria-hidden="true"></i><span class="screen-reader-text">' . esc_attr__( 'Search', 'shapely' ) . '</span></button> </form>'; return $form; } add_filter( 'get_search_form', 'shapely_search_form', 100 ); /* * Author bio on single page */ if ( ! function_exists( 'shapely_author_bio' ) ) { function shapely_author_bio() { if ( ! get_the_ID() ) { return; } $author_displayname = get_the_author_meta( 'display_name' ); $author_nickname = get_the_author_meta( 'nickname' ); $author_fullname = ( '' != get_the_author_meta( 'first_name' ) && '' != get_the_author_meta( 'last_name' ) ) ? get_the_author_meta( 'first_name' ) . ' ' . get_the_author_meta( 'last_name' ) : ''; $author_email = get_the_author_meta( 'email' ); $author_description = get_the_author_meta( 'description' ); $author_name = '' != trim($author_nickname) ? $author_nickname : ('' != trim($author_displayname) ? $author_displayname : $author_fullname); $show_athor_email = get_theme_mod( 'post_author_email', false ); $show_project_athor_email = get_theme_mod( 'project_author_email', false ); ?> <div class="author-bio"> <div class="row"> <div class="col-sm-2"> <div class="avatar"> <?php echo get_avatar( get_the_author_meta( 'ID' ), 100 ); ?> </div> </div> <div class="col-sm-10"> <span class="vcard author"><b class="fn"><?php echo esc_html( $author_name ); ?></b></span> <div> <?php if ( '' != trim( $author_description ) ) { echo wp_kses_post( $author_description ); } ?> </div> <?php if ( ( $show_athor_email && ! is_singular( 'jetpack-portfolio' ) ) || ( is_singular( 'jetpack-portfolio' ) && $show_project_athor_email ) ) : ?> <a class="author-email" href="mailto:<?php echo esc_attr( antispambot( $author_email ) ); ?>"><?php echo esc_html( antispambot( $author_email ) ); ?></a> <?php endif ?> <ul class="list-inline social-list author-social"> <?php $twitter_profile = get_the_author_meta( 'twitter' ); if ( $twitter_profile && '' != $twitter_profile ) { ?> <li> <a href="<?php echo esc_url( $twitter_profile ); ?>"> <i class="fa fa-twitter"></i> </a> </li> <?php } $fb_profile = get_the_author_meta( 'facebook' ); if ( $fb_profile && '' != $fb_profile ) { ?> <li> <a href="<?php echo esc_url( $fb_profile ); ?>"> <i class="fa fa-facebook"></i> </a> </li> <?php } $dribble_profile = get_the_author_meta( 'dribble' ); if ( $dribble_profile && '' != $dribble_profile ) { ?> <li> <a href="<?php echo esc_url( $dribble_profile ); ?>"> <i class="fa fa-dribbble"></i> </a> </li> <?php } $github_profile = get_the_author_meta( 'github' ); if ( $github_profile && '' != $github_profile ) { ?> <li> <a href="<?php echo esc_url( $github_profile ); ?>"> <i class="fa fa-github"></i> </a> </li> <?php } $vimeo_profile = get_the_author_meta( 'vimeo' ); if ( $vimeo_profile && '' != $vimeo_profile ) { ?> <li> <a href="<?php echo esc_url( $vimeo_profile ); ?>"> <i class="fa fa-vimeo"></i> </a> </li> <?php } ?> </ul> </div> </div> </div> <!--end of author-bio--> <?php } } // End if(). /** * Custom comment template */ function shapely_cb_comment( $comment, $args, $depth ) { $GLOBALS['comment'] = $comment; if ( 'ul' == $args['style'] ) { $tag = 'ul'; $add_below = 'comment'; } else { $tag = 'li'; $add_below = 'div-comment'; } ?> <li <?php comment_class( empty( $args['has_children'] ) ? '' : 'parent' ); ?> id="comment-<?php comment_ID(); ?>"> <?php if ( 'div' != $args['style'] ) : ?> <div id="div-comment-<?php comment_ID(); ?>" class="comment-body"> <?php endif; ?> <div class="avatar"> <?php if ( 0 != $args['avatar_size'] ) { echo get_avatar( $comment, $args['avatar_size'] ); } ?> </div> <div class="comment"> <b class="fn"><?php echo esc_html( get_comment_author() ); ?></b> <div class="comment-date"> <time datetime="2016-01-28T12:43:17+00:00"> <?php /* translators: 1: date, 2: time */ printf( esc_html__( '%1$s at %2$s', 'shapely' ), esc_html( get_comment_date() ), esc_html( get_comment_time() ) ); ?> </time> <?php edit_comment_link( esc_html__( 'Edit', 'shapely' ), ' ', '' ); ?> </div> <?php $comment_reply_args = array( 'add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth'], ); comment_reply_link( array_merge( $args, $comment_reply_args ) ); ?> <?php if ( '0' == $comment->comment_approved ) : ?> <p> <em class="comment-awaiting-moderation"><?php esc_html_e( 'Your comment is awaiting moderation.', 'shapely' ); ?></em> <br /> </p> <?php endif; ?> <?php comment_text(); ?> </div> <?php if ( 'div' != $args['style'] ) : ?> </div> <?php endif; ?> </li> <?php } /* * Filter to replace * Reply button class */ function shapely_reply_link_class( $class ) { $class = str_replace( "class='comment-reply-link", "class='btn btn-xs comment-reply", $class ); return $class; } /* * Comment form template */ function shapely_custom_comment_form() { $commenter = wp_get_current_commenter(); $req = get_option( 'require_name_email' ); $aria_req = ( $req ? " aria-required='true'" : '' ); $fields = array( 'author' => '<input id="author" placeholder="' . esc_html__( 'Your Name', 'shapely' ) . ( $req ? '*' : '' ) . '" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30" ' . $aria_req . ' required="required" />', 'email' => '<input id="email" name="email" type="email" placeholder="' . esc_html__( 'Email Address', 'shapely' ) . ( $req ? '*' : '' ) . '" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' required="required" />', 'url' => '<input placeholder="' . esc_html__( 'Your Website (optional)', 'shapely' ) . '" id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" />', ); $comments_args = array( 'label_submit' => esc_html__( 'Leave Comment', 'shapely' ), 'comment_field' => '<textarea placeholder="' . _x( 'Comment', 'noun', 'shapely' ) . '" id="comment" name="comment" cols="45" rows="8" aria-required="true" required="required"></textarea>', 'fields' => apply_filters( 'comment_form_default_fields', $fields ), ); return $comments_args; } /* * Header Logo */ function shapely_get_header_logo() { $logo_dimensions = get_theme_mod( 'shapely_logo_dimension', array() ); if ( ! empty( $logo_dimensions ) && isset( $logo_dimensions['width'] ) && isset( $logo_dimensions['height'] ) ) { $dimension = array( $logo_dimensions['width'], $logo_dimensions['height'] ); } else { $dimension = 'full'; } $custom_logo_id = get_theme_mod( 'custom_logo' ); // We have a logo. Logo is go. if ( $custom_logo_id ) { $custom_logo_attr = array( 'class' => 'custom-logo logo', 'itemprop' => 'logo', ); /* * If the logo alt attribute is empty, get the site title and explicitly * pass it to the attributes used by wp_get_attachment_image(). */ $image_alt = get_post_meta( $custom_logo_id, '_wp_attachment_image_alt', true ); if ( empty( $image_alt ) ) { $custom_logo_attr['alt'] = get_bloginfo( 'name', 'display' ); } /* * If the alt attribute is not empty, there's no need to explicitly pass * it because wp_get_attachment_image() already adds the alt attribute. */ $html = sprintf( '<a href="%1$s" class="custom-logo-link" rel="home" itemprop="url">%2$s</a>', esc_url( home_url( '/' ) ), wp_get_attachment_image( $custom_logo_id, $dimension, false, $custom_logo_attr ) ); } // If no logo is set but we're in the Customizer, leave a placeholder (needed for the live preview). elseif ( is_customize_preview() ) { $html = sprintf( '<a href="%1$s" class="custom-logo-link"><img class="custom-logo"/ style="display:none;"><span class="site-title">%2$s</span></a>', esc_url( home_url( '/' ) ), esc_html( get_bloginfo( 'name' ) ) ); } else { $html = sprintf( '<a href="%1$s" class="custom-logo-link"><span class="site-title">%2$s</span></a>', esc_url( home_url( '/' ) ), esc_html( get_bloginfo( 'name' ) ) ); } echo wp_kses_post( $html ); } /* * Get layout class from single page * then from themeoptions */ function shapely_get_layout_class() { if ( is_singular( 'jetpack-portfolio' ) ) { $layout_class = get_theme_mod( 'single_project_layout_template', 'sidebar-right' ); } elseif ( is_single() ) { $template = get_page_template_slug(); $layout_class = ''; switch ( $template ) { case 'page-templates/full-width.php': $layout_class = 'full-width'; break; case 'page-templates/no-sidebar.php': $layout_class = 'no-sidebar'; break; case 'page-templates/sidebar-left.php': $layout_class = 'sidebar-left'; break; case 'page-templates/sidebar-right.php': $layout_class = 'sidebar-right'; break; default: $layout_class = get_theme_mod( 'single_post_layout_template', 'sidebar-right' ); break; } } elseif ( is_singular() ) { $template = get_page_template_slug(); $layout_class = ''; switch ( $template ) { case 'page-templates/full-width.php': $layout_class = 'full-width'; break; case 'page-templates/no-sidebar.php': $layout_class = 'no-sidebar'; break; case 'page-templates/sidebar-left.php': $layout_class = 'sidebar-left'; break; case 'page-templates/sidebar-right.php': $layout_class = 'sidebar-right'; break; default: $layout_class = get_theme_mod( 'blog_layout_template', 'sidebar-right' ); break; } } elseif ( is_archive() && is_post_type_archive( 'jetpack-portfolio' ) ) { $layout_class = get_theme_mod( 'projects_layout_template', 'full-width' ); } else { $layout_class = get_theme_mod( 'blog_layout_template', 'sidebar-right' ); } // End if(). return $layout_class; } /* * Show Sidebar or not */ function shapely_show_sidebar() { global $post; $show_sidebar = true; if ( is_singular() && ( get_post_meta( $post->ID, 'site_layout', true ) ) ) { if ( get_post_meta( $post->ID, 'site_layout', true ) == 'no-sidebar' || get_post_meta( $post->ID, 'site_layout', true ) == 'full-width' ) { $show_sidebar = false; } } elseif ( get_theme_mod( 'shapely_sidebar_position' ) == 'no-sidebar' || get_theme_mod( 'shapely_sidebar_position' ) == 'full-width' ) { $show_sidebar = false; } return $show_sidebar; } /* * Top Callout */ function shapely_top_callout() { if ( ( get_theme_mod( 'portfolio_archive_title', true ) && is_post_type_archive( 'jetpack-portfolio' ) ) || ( get_theme_mod( 'top_callout', true ) && ! is_single() && ! is_post_type_archive( 'jetpack-portfolio' ) ) || ( is_single() && get_theme_mod( 'title_in_header', true ) && ! is_singular( 'jetpack-portfolio' ) ) || ( get_theme_mod( 'project_title_in_header', true ) && is_singular( 'jetpack-portfolio' ) ) ) { $header = get_header_image(); ?> <section class="page-title-section bg-secondary <?php echo $header ? 'header-image-bg' : ''; ?>" <?php echo $header ? 'style="background-image:url(' . esc_url( $header ) . ')"' : ''; ?>> <div class="container"> <div class="row"> <?php $breadcrumbs_enabled = false; $title_in_post = true; if ( function_exists( 'yoast_breadcrumb' ) ) { $options = get_option( 'wpseo_internallinks' ); $breadcrumbs_enabled = ( true === $options['breadcrumbs-enable'] ); $title_in_post = get_theme_mod( 'hide_post_title', true ); } if ( function_exists( 'rank_math_the_breadcrumbs' ) ) { $breadcrumbs_enabled = true; $breadcrumbs_enabled = ( true === is_array($options)? $options['breadcrumbs-enable'] : false); $title_in_post = get_theme_mod( 'hide_post_title', true ); } $header_color = get_theme_mod( 'header_textcolor', false ); ?> <?php if ( $title_in_post ) : ?> <div class="<?php echo $breadcrumbs_enabled ? 'col-md-6 col-sm-6 col-xs-12' : 'col-xs-12'; ?>"> <h3 class="page-title" <?php echo $header_color ? 'style="color:#' . esc_attr( $header_color ) . '"' : ''; ?>> <?php if ( is_home() ) { echo esc_html( get_theme_mod( 'blog_name' ) ? get_theme_mod( 'blog_name' ) : __( 'Blog', 'shapely' ) ); } elseif ( is_search() ) { echo esc_html__( 'Search', 'shapely' ); } elseif ( is_archive() ) { if ( is_post_type_archive( 'jetpack-portfolio' ) ) { $portfolio_title = get_theme_mod( 'portfolio_name', esc_html__( 'Portfolio', 'shapely' ) ); echo esc_html( $portfolio_title ); } else { echo esc_html( get_the_archive_title() ); } } elseif ( is_singular() ) { echo single_post_title(); } else { echo esc_html( get_the_title() ); } ?> </h3> <?php if ( is_archive() && is_post_type_archive( 'jetpack-portfolio' ) ) { $portfolio_description = get_theme_mod( 'portfolio_description' ); if ( $portfolio_description ) { echo '<p>' . wp_kses_post( nl2br( $portfolio_description ) ) . '</p>'; } } ?> </div> <?php endif; ?> <?php if ( $breadcrumbs_enabled ) { ?> <?php if ( function_exists( 'yoast_breadcrumb' ) ) { ?> <div class="<?php echo $title_in_post ? 'col-md-6 col-sm-6' : ''; ?> col-xs-12 text-right"> <?php yoast_breadcrumb( '<p id="breadcrumbs">', '</p>' ); ?> </div> <?php } ?> <!-- Rank Math SEO's Breadcrumb Function --> <?php if ( function_exists( 'rank_math_the_breadcrumbs' ) ) { ?> <div class="<?php echo $title_in_post ? 'col-md-6 col-sm-6' : ''; ?> col-xs-12 text-right"> <?php rank_math_the_breadcrumbs(); ?> </div> <?php } ?> <?php } ?> </div> <!--end of row--> </div> <!--end of container--> </section> <?php } else { ?> <?php if ( function_exists( 'yoast_breadcrumb' ) ) { ?> <div class="container mt20"> <?php yoast_breadcrumb( '<p id="breadcrumbs">', '</p>' ); ?> </div> <?php } ?> <!-- Rank Math SEO's Breadcrumb Function --> <?php if ( function_exists( 'rank_math_the_breadcrumbs' ) ) { ?> <div class="container mt20"> <?php rank_math_the_breadcrumbs(); ?> </div> <?php } ?> <?php } // End if(). } /* * Footer Callout */ function shapely_footer_callout() { if ( get_theme_mod( 'footer_callout_text' ) != '' ) { ?> <section class="cfa-section bg-secondary"> <div class="container"> <div class="row"> <div class="col-sm-12 text-center p0"> <div class="overflow-hidden"> <div class="col-sm-9"> <h3 class="cfa-text"><?php echo wp_kses_post( nl2br( get_theme_mod( 'footer_callout_text' ) ) ); ?></h3> </div> <div class="col-sm-3"> <a href="<?php echo esc_url( get_theme_mod( 'footer_callout_link' ) ); ?>" class="mb0 btn btn-lg btn-filled cfa-button"> <?php echo wp_kses_post( get_theme_mod( 'footer_callout_btntext' ) ); ?> </a> </div> </div> </div> </div> </div> </section> <?php } } // Check WooCommerce if ( ! function_exists( 'shapely_is_woocommerce_activated' ) ) { function shapely_is_woocommerce_activated() { if ( class_exists( 'woocommerce' ) ) { return true; } else { return false; } } } /** * Add container to Rank Math breadcrumbs. */ add_action( 'rank_math/frontend/breadcrumb/args', function( $args ) { $args['wrap_before'] = '<p id="breadcrumbs">'; $args['wrap_after'] = '</p>'; return $args; });