File "template-functions.php"
Full Path: /home/pumpbmko/public_html/wp-content/themes/pure-portfolio/inc/template-functions.php
File size: 10.36 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Functions which enhance the theme by hooking into WordPress
*
* @package Pure_Portfolio
*/
/**
* Adds custom classes to the array of body classes.
*
* @param array $classes Classes for the body element.
* @return array
*/
function pure_portfolio_body_classes( $classes ) {
// Adds a class of hfeed to non-singular pages.
if ( ! is_singular() ) {
$classes[] = 'hfeed';
}
// Adds a class of no-sidebar when there is no sidebar present.
if ( ! is_active_sidebar( 'sidebar-1' ) ) {
$classes[] = 'no-sidebar';
}
// Added class to change theme mode.
$classes[] = 'dark-theme';
$classes[] = pure_portfolio_sidebar_layout();
return $classes;
}
add_filter( 'body_class', 'pure_portfolio_body_classes' );
/**
* Add a pingback url auto-discovery header for single posts, pages, or attachments.
*/
function pure_portfolio_pingback_header() {
if ( is_singular() && pings_open() ) {
printf( '<link rel="pingback" href="%s">', esc_url( get_bloginfo( 'pingback_url' ) ) );
}
}
add_action( 'wp_head', 'pure_portfolio_pingback_header' );
/**
* Get all posts for customizer Post content type.
*/
function pure_portfolio_get_post_choices() {
$choices = array( '' => esc_html__( '--Select--', 'pure-portfolio' ) );
$args = array( 'numberposts' => -1 );
$posts = get_posts( $args );
foreach ( $posts as $post ) {
$id = $post->ID;
$title = $post->post_title;
$choices[ $id ] = $title;
}
return $choices;
}
/**
* Get all pages for customizer Page content type.
*/
function pure_portfolio_get_page_choices() {
$choices = array( '' => esc_html__( '--Select--', 'pure-portfolio' ) );
$pages = get_pages();
foreach ( $pages as $page ) {
$choices[ $page->ID ] = $page->post_title;
}
return $choices;
}
/**
* Get all categories for customizer Category content type.
*/
function pure_portfolio_get_post_cat_choices() {
$choices = array( '' => esc_html__( '--Select--', 'pure-portfolio' ) );
$cats = get_categories();
foreach ( $cats as $cat ) {
$choices[ $cat->term_id ] = $cat->name;
}
return $choices;
}
if ( ! function_exists( 'pure_portfolio_excerpt_length' ) ) :
/**
* Excerpt length.
*/
function pure_portfolio_excerpt_length( $length ) {
if ( is_admin() ) {
return $length;
}
return get_theme_mod( 'pure_portfolio_excerpt_length', 20 );
}
endif;
add_filter( 'excerpt_length', 'pure_portfolio_excerpt_length', 999 );
if ( ! function_exists( 'pure_portfolio_excerpt_more' ) ) :
/**
* Excerpt more.
*/
function pure_portfolio_excerpt_more( $more ) {
if ( is_admin() ) {
return $more;
}
return '…';
}
endif;
add_filter( 'excerpt_more', 'pure_portfolio_excerpt_more' );
if ( ! function_exists( 'pure_portfolio_sidebar_layout' ) ) {
/**
* Get sidebar layout.
*/
function pure_portfolio_sidebar_layout() {
$sidebar_position = get_theme_mod( 'pure_portfolio_sidebar_position', 'right-sidebar' );
$sidebar_position_post = get_theme_mod( 'pure_portfolio_post_sidebar_position', 'right-sidebar' );
$sidebar_position_page = get_theme_mod( 'pure_portfolio_page_sidebar_position', 'right-sidebar' );
if ( is_single() ) {
$sidebar_position = $sidebar_position_post;
} elseif ( is_page() ) {
$sidebar_position = $sidebar_position_page;
}
return $sidebar_position;
}
}
if ( ! function_exists( 'pure_portfolio_is_sidebar_enabled' ) ) {
/**
* Check if sidebar is enabled.
*/
function pure_portfolio_is_sidebar_enabled() {
$sidebar_position = get_theme_mod( 'pure_portfolio_sidebar_position', 'right-sidebar' );
$sidebar_position_post = get_theme_mod( 'pure_portfolio_post_sidebar_position', 'right-sidebar' );
$sidebar_position_page = get_theme_mod( 'pure_portfolio_page_sidebar_position', 'right-sidebar' );
$sidebar_enabled = true;
if ( is_home() || is_archive() || is_search() ) {
if ( 'no-sidebar' === $sidebar_position ) {
$sidebar_enabled = false;
}
} elseif ( is_single() ) {
if ( 'no-sidebar' === $sidebar_position || 'no-sidebar' === $sidebar_position_post ) {
$sidebar_enabled = false;
}
} elseif ( is_page() ) {
if ( 'no-sidebar' === $sidebar_position || 'no-sidebar' === $sidebar_position_page ) {
$sidebar_enabled = false;
}
}
return $sidebar_enabled;
}
}
if ( ! function_exists( 'pure_portfolio_get_homepage_sections ' ) ) {
/**
* Returns homepage sections.
*/
function pure_portfolio_get_homepage_sections() {
$sections = array(
'banner' => esc_html__( 'Banner Section', 'pure-portfolio' ),
'skill' => esc_html__( 'Skill Section', 'pure-portfolio' ),
'experience' => esc_html__( 'Experience Section', 'pure-portfolio' ),
'gallery' => esc_html__( 'Gallery Section', 'pure-portfolio' ),
'blog' => esc_html__( 'Blog Section', 'pure-portfolio' ),
'cta' => esc_html__( 'CTA Section', 'pure-portfolio' ),
);
return $sections;
}
}
// Added custom classes to anchor in wp_nav_menu
add_filter(
'nav_menu_link_attributes',
function( $atts ) {
$atts['class'] = 'magic-hover magic-hover__square';
return $atts;
},
100,
1
);
function pure_portfolio_section_link( $section_id ) {
$section_name = str_replace( 'pure_portfolio_', ' ', $section_id );
$section_name = str_replace( '_', ' ', $section_name );
$starting_notation = '#';
?>
<span class="section-link">
<span class="section-link-title"><?php echo esc_html( $section_name ); ?></span>
</span>
<style type="text/css">
<?php echo $starting_notation . $section_id; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>:hover .section-link {
visibility: visible;
}
</style>
<?php
}
function pure_portfolio_section_link_css() {
if ( is_customize_preview() ) {
?>
<style type="text/css">
.section-link {
visibility: hidden;
background-color: black;
position: relative;
top: 80px;
z-index: 99;
left: 40px;
color: #fff;
text-align: center;
font-size: 20px;
border-radius: 10px;
padding: 20px 10px;
text-transform: capitalize;
}
.section-link-title {
padding: 0 10px;
}
</style>
<?php
}
}
add_action( 'wp_head', 'pure_portfolio_section_link_css' );
/**
* Breadcrumb.
*/
function pure_portfolio_breadcrumb( $args = array() ) {
if ( ! get_theme_mod( 'pure_portfolio_enable_breadcrumb', true ) ) {
return;
}
$args = array(
'show_on_front' => false,
'show_title' => true,
'show_browse' => false,
);
breadcrumb_trail( $args );
}
add_action( 'pure_portfolio_breadcrumb', 'pure_portfolio_breadcrumb', 10 );
/**
* Add separator for breadcrumb trail.
*/
function pure_portfolio_breadcrumb_trail_print_styles() {
$breadcrumb_separator = get_theme_mod( 'pure_portfolio_breadcrumb_separator', '/' );
$style = '
.trail-items li::after {
content: "' . $breadcrumb_separator . '";
}'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
$style = apply_filters( 'pure_portfolio_breadcrumb_trail_inline_style', trim( str_replace( array( "\r", "\n", "\t", ' ' ), '', $style ) ) );
if ( $style ) {
echo "\n" . '<style type="text/css" id="breadcrumb-trail-css">' . $style . '</style>' . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
}
add_action( 'wp_head', 'pure_portfolio_breadcrumb_trail_print_styles' );
/**
* Pagination for archive.
*/
function pure_portfolio_render_posts_pagination() {
$is_pagination_enabled = get_theme_mod( 'pure_portfolio_enable_pagination', true );
if ( $is_pagination_enabled ) {
$pagination_type = get_theme_mod( 'pure_portfolio_pagination_type', 'default' );
if ( 'default' === $pagination_type ) :
the_posts_navigation();
else :
the_posts_pagination();
endif;
}
}
add_action( 'pure_portfolio_posts_pagination', 'pure_portfolio_render_posts_pagination', 10 );
/**
* Pagination for single post.
*/
function pure_portfolio_render_post_navigation() {
the_post_navigation(
array(
'prev_text' => '<span>⟵</span> <span class="nav-title">%title</span>',
'next_text' => '<span class="nav-title">%title</span> <span>⟶</span>',
)
);
}
add_action( 'pure_portfolio_post_navigation', 'pure_portfolio_render_post_navigation' );
if ( ! function_exists( 'pure_portfolio_validate_excerpt_length' ) ) :
function pure_portfolio_validate_excerpt_length( $validity, $value ) {
$value = intval( $value );
if ( empty( $value ) || ! is_numeric( $value ) ) {
$validity->add( 'required', esc_html__( 'You must supply a valid number.', 'pure-portfolio' ) );
} elseif ( $value < 1 ) {
$validity->add( 'min_no_of_words', esc_html__( 'Minimum no of words is 1', 'pure-portfolio' ) );
} elseif ( $value > 100 ) {
$validity->add( 'max_no_of_words', esc_html__( 'Maximum no of words is 100', 'pure-portfolio' ) );
}
return $validity;
}
endif;
/**
* Adds footer copyright text.
*/
function pure_portfolio_output_footer_copyright_content() {
$theme_data = wp_get_theme();
$search = array( '[the-year]', '[site-link]' );
$replace = array( date( 'Y' ), '<a href="' . esc_url( home_url( '/' ) ) . '">' . esc_attr( get_bloginfo( 'name', 'display' ) ) . '</a>' );
/* translators: 1: Year, 2: Site Title with home URL. */
$copyright_default = sprintf( esc_html_x( 'Copyright © %1$s %2$s', '1: Year, 2: Site Title with home URL', 'pure-portfolio' ), '[the-year]', '[site-link]' );
$copyright_text = get_theme_mod( 'pure_portfolio_footer_copyright_text', $copyright_default );
$copyright_text = str_replace( $search, $replace, $copyright_text );
$copyright_text .= ' ' . esc_html( ' | ' . $theme_data->get( 'Name' ) ) . ' ' . esc_html__( 'by', 'pure-portfolio' ) . ' <a target="_blank" href="' . esc_url( $theme_data->get( 'AuthorURI' ) ) . '">' . esc_html( ucwords( $theme_data->get( 'Author' ) ) ) . '</a>';
/* translators: %s: WordPress.org URL */
$copyright_text .= sprintf( esc_html__( ' | Powered by %s', 'pure-portfolio' ), '<a href="' . esc_url( __( 'https://wordpress.org/', 'pure-portfolio' ) ) . '" target="_blank">WordPress</a>. ' );
?>
<div class="copyright">
<span><?php echo wp_kses_post( $copyright_text ); ?></span>
</div>
<?php
}
add_action( 'pure_portfolio_footer_copyright', 'pure_portfolio_output_footer_copyright_content' );