2021-04-27 22:21:26 +02:00
< ? php
/**
* Foundation PHP template
*
2021-04-28 01:20:47 +02:00
* @ package arcHIVE - theme
* @ since arcHIVE - theme 1.0 . 0
2021-04-27 22:21:26 +02:00
*/
// Pagination.
if ( ! function_exists ( 'foundationpress_pagination' ) ) :
function foundationpress_pagination () {
global $wp_query ;
$big = 999999999 ; // This needs to be an unlikely integer
// For more options and info view the docs for paginate_links()
// http://codex.wordpress.org/Function_Reference/paginate_links
$paginate_links = paginate_links (
array (
'base' => str_replace ( $big , '%#%' , html_entity_decode ( get_pagenum_link ( $big ) ) ),
'current' => max ( 1 , get_query_var ( 'paged' ) ),
'total' => $wp_query -> max_num_pages ,
'mid_size' => 5 ,
'prev_next' => true ,
'prev_text' => '' ,
'next_text' => '' ,
'type' => 'list' ,
)
);
// Display the pagination if more than one page is found.
if ( $paginate_links ) {
// Match patterns for preg_replace
$preg_find = [
'/\s*page-numbers\s*/' , // Captures string 'page-numbers' and any whitespace before and after
" / \ s*class=''/ " , // Captures any empty class attributes
'/<li><a class="prev" href="(\S+)">/' , // '(\S+)' Captures href value for backreference
'/<li><a class="next" href="(\S+)">/' , // '(\S+)' Captures href value for backreference
" /<li><span aria-current='page' class='current'>( \ d+)< \ /span>< \ /li>/ " , // '(\d+)' Captures page number for backreference
" /<li><a href='( \ S+)'>( \ d+)< \ /a>< \ /li>/ " , // '(\S+)' Captures href value for backreference, (\d+)' Captures page number for backreference
];
// preg_replace replacements
$preg_replace = [
'' ,
'' ,
'<li class="pagination-previous"><a href="$1" aria-label="Previous page">' , // '$1' Outputs backreference href value
'<li class="pagination-next"><a href="$1" aria-label="Next page">' , // '$1' Outputs backreference href value
'<li class="current" aria-current="page"><span class="show-for-sr">You\'re on page </span>$1</li>' , // '$1' Outputs backreference page number
'<li><a href="$1" aria-label="Page $2">$2</a></li>' , // '$1' Ouputs backreference href, '$2' outputs backreference page number
];
// Match patterns for str_replace
$str_find = [
" <ul> " ,
'<li><span class="dots">…</span></li>' ,
];
// str_replace replacements
$str_replace = [
'<ul class="pagination text-center">' ,
'<li class="ellipsis" aria-hidden="true"></li>' ,
];
$paginate_links = preg_replace ( $preg_find , $preg_replace , $paginate_links );
$paginate_links = str_replace ( $str_find , $str_replace , $paginate_links );
$paginate_links = '<nav aria-label="Pagination">' . $paginate_links . '</nav>' ;
echo $paginate_links ;
}
}
endif ;
// Custom Comments Pagination.
if ( ! function_exists ( 'foundationpress_get_the_comments_pagination' ) ) :
function foundationpress_get_the_comments_pagination ( $args = array () ) {
$navigation = '' ;
$args = wp_parse_args ( $args , array (
'prev_text' => __ ( '«' , 'foundationpress' ),
'next_text' => __ ( '»' , 'foundationpress' ),
'size' => 'default' ,
'show_disabled' => true ,
) );
$args [ 'type' ] = 'array' ;
$args [ 'echo' ] = false ;
$links = paginate_comments_links ( $args );
if ( $links ) {
$link_count = count ( $links );
$pagination_class = 'pagination' ;
if ( 'large' == $args [ 'size' ] ) {
$pagination_class .= ' pagination-lg' ;
} elseif ( 'small' == $args [ 'size' ] ) {
$pagination_class .= ' pagination-sm' ;
}
$current = get_query_var ( 'cpage' ) ? intval ( get_query_var ( 'cpage' ) ) : 1 ;
$total = get_comment_pages_count ();
$navigation .= '<ul class="' . $pagination_class . '">' ;
if ( $args [ 'show_disabled' ] && 1 === $current ) {
$navigation .= '<li class="page-item disabled">' . $args [ 'prev_text' ] . '</li>' ;
}
foreach ( $links as $index => $link ) {
if ( 0 == $index && 0 === strpos ( $link , '<a class="prev' ) ) {
$navigation .= '<li class="page-item">' . str_replace ( 'prev page-numbers' , 'page-link' , $link ) . '</li>' ;
} elseif ( $link_count - 1 == $index && 0 === strpos ( $link , '<a class="next' ) ) {
$navigation .= '<li class="page-item">' . str_replace ( 'next page-numbers' , 'page-link' , $link ) . '</li>' ;
} else {
$link = preg_replace ( " /(class|href)='(.*)'/U " , '$1="$2"' , $link );
if ( 0 === strpos ( $link , '<span class="page-numbers current' ) ) {
$navigation .= '<li class="page-item active">' . str_replace ( array ( '<span class="page-numbers current">' , '</span>' ), array ( '<a class="page-link" href="#">' , '</a>' ), $link ) . '</li>' ;
} elseif ( 0 === strpos ( $link , '<span class="page-numbers dots' ) ) {
$navigation .= '<li class="page-item disabled">' . str_replace ( array ( '<span class="page-numbers dots">' , '</span>' ), array ( '<a class="page-link" href="#">' , '</a>' ), $link ) . '</li>' ;
} else {
$navigation .= '<li class="page-item">' . str_replace ( 'class="page-numbers' , 'class="page-link' , $link ) . '</li>' ;
}
}
}
if ( $args [ 'show_disabled' ] && $current == $total ) {
$navigation .= '<li class="page-item disabled">' . $args [ 'next_text' ] . '</li>' ;
}
$navigation .= '</ul>' ;
$navigation = _navigation_markup ( $navigation , 'comments-pagination' );
}
return $navigation ;
}
endif ;
// Custom Comments Pagination.
if ( ! function_exists ( 'foundationpress_the_comments_pagination' ) ) :
function foundationpress_the_comments_pagination ( $args = array () ) {
echo foundationpress_get_the_comments_pagination ( $args );
}
endif ;
/**
* A fallback when no navigation is selected by default .
*/
if ( ! function_exists ( 'foundationpress_menu_fallback' ) ) :
function foundationpress_menu_fallback () {
echo '<div class="alert-box secondary">' ;
/* translators: %1$s: link to menus, %2$s: link to customize. */
printf (
__ ( 'Please assign a menu to the primary menu location under %1$s or %2$s the design.' , 'foundationpress' ),
/* translators: %s: menu url */
sprintf (
__ ( '<a href="%s">Menus</a>' , 'foundationpress' ),
get_admin_url ( get_current_blog_id (), 'nav-menus.php' )
),
/* translators: %s: customize url */
sprintf (
__ ( '<a href="%s">Customize</a>' , 'foundationpress' ),
get_admin_url ( get_current_blog_id (), 'customize.php' )
)
);
echo '</div>' ;
}
endif ;
// Add Foundation 'is-active' class for the current menu item.
if ( ! function_exists ( 'foundationpress_active_nav_class' ) ) :
function foundationpress_active_nav_class ( $classes , $item ) {
if ( $item -> current == 1 || $item -> current_item_ancestor == true ) {
$classes [] = 'is-active' ;
}
return $classes ;
}
add_filter ( 'nav_menu_css_class' , 'foundationpress_active_nav_class' , 10 , 2 );
endif ;
/**
* Use the is - active class of ZURB Foundation on wp_list_pages output .
* From required + Foundation http :// themes . required . ch .
*/
if ( ! function_exists ( 'foundationpress_active_list_pages_class' ) ) :
function foundationpress_active_list_pages_class ( $input ) {
$pattern = '/current_page_item/' ;
$replace = 'current_page_item is-active' ;
$output = preg_replace ( $pattern , $replace , $input );
return $output ;
}
add_filter ( 'wp_list_pages' , 'foundationpress_active_list_pages_class' , 10 , 2 );
endif ;
/**
* Get mobile menu ID
*/
if ( ! function_exists ( 'foundationpress_mobile_menu_id' ) ) :
function foundationpress_mobile_menu_id () {
if ( get_theme_mod ( 'wpt_mobile_menu_layout' ) === 'offcanvas' ) {
echo 'off-canvas-menu' ;
} else {
echo 'mobile-menu' ;
}
}
endif ;
/**
* Get title bar responsive toggle attribute
*/
if ( ! function_exists ( 'foundationpress_title_bar_responsive_toggle' ) ) :
function foundationpress_title_bar_responsive_toggle () {
if ( ! get_theme_mod ( 'wpt_mobile_menu_layout' ) || get_theme_mod ( 'wpt_mobile_menu_layout' ) === 'topbar' ) {
echo 'data-responsive-toggle="mobile-menu"' ;
}
}
endif ;
/**
* Custom markup for Wordpress gallery
*/
if ( ! function_exists ( 'foundationpress_gallery' ) ) :
function foundationpress_gallery ( $attr ) {
$post = get_post ();
static $instance = 0 ;
$instance ++ ;
if ( ! empty ( $attr [ 'ids' ] ) ) {
// 'ids' is explicitly ordered, unless you specify otherwise.
if ( empty ( $attr [ 'orderby' ] ) )
$attr [ 'orderby' ] = 'post__in' ;
$attr [ 'include' ] = $attr [ 'ids' ];
}
// Allow plugins/themes to override the default gallery template.
$output = apply_filters ( 'post_gallery' , '' , $attr , $instance );
if ( $output != '' )
return $output ;
// Let's make sure it looks like a valid orderby statement
if ( isset ( $attr [ 'orderby' ] ) ) {
$attr [ 'orderby' ] = sanitize_sql_orderby ( $attr [ 'orderby' ] );
if ( ! $attr [ 'orderby' ] )
unset ( $attr [ 'orderby' ] );
}
$atts = shortcode_atts ( array (
'order' => 'ASC' ,
'orderby' => 'menu_order ID' ,
'id' => $post ? $post -> ID : 0 ,
'itemtag' => 'figure' ,
'icontag' => 'div' ,
'captiontag' => 'figcaption' ,
'columns-small' => 2 , // set default columns for small screen
'columns-medium' => 4 , // set default columns for medium screen
'columns' => 3 , // set default columns for large screen (3 = wordpress default)
'size' => 'thumbnail' ,
'include' => '' ,
'exclude' => ''
), $attr , 'gallery' );
$id = intval ( $atts [ 'id' ]);
if ( ! empty ( $atts [ 'include' ]) ) {
$_attachments = get_posts ( array ( 'include' => $atts [ 'include' ], 'post_status' => 'inherit' , 'post_type' => 'attachment' , 'post_mime_type' => 'image' , 'order' => $atts [ 'order' ], 'orderby' => $atts [ 'orderby' ]) );
$attachments = array ();
foreach ( $_attachments as $key => $val ) {
$attachments [ $val -> ID ] = $_attachments [ $key ];
}
} elseif ( ! empty ( $atts [ 'exclude' ]) ) {
$attachments = get_children ( array ( 'post_parent' => $id , 'exclude' => $atts [ 'exclude' ], 'post_status' => 'inherit' , 'post_type' => 'attachment' , 'post_mime_type' => 'image' , 'order' => $atts [ 'order' ], 'orderby' => $atts [ 'orderby' ]) );
} else {
$attachments = get_children ( array ( 'post_parent' => $id , 'post_status' => 'inherit' , 'post_type' => 'attachment' , 'post_mime_type' => 'image' , 'order' => $atts [ 'order' ], 'orderby' => $atts [ 'orderby' ]) );
}
if ( empty ( $attachments ) )
return '' ;
if ( is_feed () ) {
$output = " \n " ;
foreach ( $attachments as $att_id => $attachment )
$output .= wp_get_attachment_link ( $att_id , $atts [ 'size' ], true ) . " \n " ;
return $output ;
}
$item_tag = tag_escape ( $atts [ 'itemtag' ]);
$caption_tag = tag_escape ( $atts [ 'captiontag' ]);
$icon_tag = tag_escape ( $atts [ 'icontag' ]);
$valid_tags = wp_kses_allowed_html ( 'post' );
if ( ! isset ( $valid_tags [ $item_tag ] ) )
$item_tag = 'figure' ;
if ( ! isset ( $valid_tags [ $caption_tag ] ) )
$caption_tag = 'figcaption' ;
if ( ! isset ( $valid_tags [ $icon_tag ] ) )
$icon_tag = 'div' ;
$columns = intval ( $atts [ 'columns' ]);
$columns_small = intval ( $atts [ 'columns-small' ]);
$columns_medium = intval ( $atts [ 'columns-medium' ]);
$selector = " gallery- { $instance } " ;
$ size_class = sanitize_html_class ( $atts [ 'size' ] );
// Edit this line to modify the default number of grid columns for the small and medium sizes. The large size is passed in the WordPress gallery settings.
$output = " <div id=' $selector ' class='fp-gallery galleryid- { $id } gallery-size- { $size_class } grid-x grid-margin-x small-up- { $columns_small } medium-up- { $columns_medium } large-up- { $columns } '> " ;
foreach ( $attachments as $id => $attachment ) {
// Check if destination is file, nothing or attachment page.
if ( isset ( $attr [ 'link' ]) && $attr [ 'link' ] == 'file' ){
$link = wp_get_attachment_link ( $id , $size_class , false , false , false , array ( 'class' => '' , 'id' => " imageid- $id " ));
// Edit this line to implement your html params in <a> tag with use a custom lightbox plugin.
$link = str_replace ( '<a href' , '<a class="thumbnail fp-gallery-lightbox" data-gall="fp-gallery-' . $post -> ID . '" data-title="' . wptexturize ( $attachment -> post_excerpt ) . '" title="' . wptexturize ( $attachment -> post_excerpt ) . '" href' , $link );
} elseif ( isset ( $attr [ 'link' ]) && $attr [ 'link' ] == 'none' ){
$link = wp_get_attachment_image ( $id , $size_class , false , array ( 'class' => " thumbnail attachment- $size_class size- $size_class " , 'id' => " imageid- $id " ));
} else {
$link = wp_get_attachment_link ( $id , $size_class , true , false , false , array ( 'class' => '' , 'id' => " imageid- $id " ));
$link = str_replace ( '<a href' , '<a class="thumbnail" title="' . wptexturize ( $attachment -> post_excerpt ) . '" href' , $link );
}
$image_meta = wp_get_attachment_metadata ( $id );
$orientation = '' ;
if ( isset ( $image_meta [ 'height' ], $image_meta [ 'width' ] ) ) {
$orientation = ( $image_meta [ 'height' ] > $image_meta [ 'width' ] ) ? 'portrait' : 'landscape' ;
}
$output .= " < { $item_tag } class='fp-gallery-item cell'> " ;
$output .= "
< { $icon_tag } class = 'fp-gallery-icon {$orientation}' >
$link
</ { $icon_tag } > " ;
// Uncomment if you wish to display captions inline on gallery.
/*
if ( $caption_tag && trim ( $attachment -> post_excerpt ) ) {
$output .= "
< { $caption_tag } class = 'wp-caption-text gallery-caption' >
" . wptexturize( $attachment->post_excerpt ) . "
</ { $caption_tag } > " ;
}
*/
$output .= " </ { $item_tag } > " ;
}
$output .= " </div> \n " ;
return $output ;
}
add_shortcode ( 'gallery' , 'foundationpress_gallery' );
endif ;