<?php /** * Foundation PHP template * * @package arcHIVE-theme * @since arcHIVE-theme 1.0.0 */ // 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;