PluginProbe
Catch Breadcrumb / 1.2
Catch Breadcrumb v1.2
trunk 1.0.0 1.0.1 1.0.2 1.1 1.2 1.3 1.4 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6 1.7 1.8 1.9 2.0 2.1 2.2 All 29 releases
catch-breadcrumb / includes / shortcodes.php

shortcodes.php in Catch Breadcrumb 1.2, at includes/shortcodes.php

244 lines 10.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 *
4 *
5 * @link https://catchplugins.com/plugins
6 * @since 1.0.0
7 *
8 * @package breadcrumb
9 * @subpackage Breadcrumb/includes
10 */
11
12 /**
13 *
14 *
15 * @package Breadcrumb
16 * @subpackage Breadcrumb/includes
17 * @author Catch Plugins <info@catchplugins.com
18 */
19
20
21 class Catch_Breadcrumb_Shortcode {
22 public function __construct() {
23 add_shortcode( 'catch-breadcrumb', array( $this, 'catch_breadcrumb_shortcode' ) );
24 }
25
26 public function catch_display_breadcrumb(){
27 do_shortcode( '[catch-breadcrumb]' );
28 }
29
30 public function catch_breadcrumb_shortcode( $atts,$content ) {
31 if ( function_exists( 'woocommerce_breadcrumb' ) && ( is_woocommerce() || is_shop() ) ) : ?>
32 <div class="breadcrumb-area">
33 <div class="section-wrapper">
34 <?php
35 $catch_breadcrumb_options = catch_breadcrumb_get_options();
36 $breadcrumb_separator = $catch_breadcrumb_options['breadcrumb_separator'];
37
38 if ( $breadcrumb_separator ) {
39 $breadcrumb_separator = '<span class="sep">' . $breadcrumb_separator . '</span>';
40 }
41
42 $args = array(
43 'delimiter' => $breadcrumb_separator,
44 'before' => '<span class="breadcrumb">',
45 'after' => '</span>',
46 );
47
48 woocommerce_breadcrumb( $args );
49 ?>
50 </div><!-- .wrapper -->
51 </div><!-- .breadcrumb-area -->
52 <?php
53 else:
54 self::breadcrumb( $atts,$content );
55 endif;
56 }
57
58 public function breadcrumb( $atts,$content ) {
59 $defaults = array(
60 'before' => '<span class="breadcrumb-current">',// code before the breadcrumb section
61 'after' => '</span>', // code after the breadcrumb section
62 'showCurrent'=> 1,// 1 - show current post/page title in breadcrumbs, 0 - don't show
63 //'echo' => true,
64 'linkBefore' => '<span class="breadcrumb" typeof="v:Breadcrumb">',
65 'linkAfter' => '</span>',
66 );
67 $atts = wp_parse_args( $atts, $defaults );
68 $content= $atts['before'];
69 $catch_breadcrumb_options = catch_breadcrumb_get_options();
70 if ( $catch_breadcrumb_options['breadcrumb_separator'] ) {
71 $catch_breadcrumb_options['breadcrumb_separator'] = '<span class="sep">' . $catch_breadcrumb_options['breadcrumb_separator'] . '</span>';
72 }
73
74 /* === OPTIONS === */
75 $text['home'] = esc_html__( 'Home', 'catch-breadcrumb' ); // text for the 'Home' link
76 /* translators: 1: before text/html, 2: after text/html. */
77 $text['category'] = esc_html__( '%1$s Archive for %2$s', 'catch-breadcrumb' ); // text for a category page
78 /* translators: 1: before text/html, 2: after text/html. */
79 $text['search'] = esc_html__( '%1$sSearch results for: %2$s', 'catch-breadcrumb' ); // text for a search results page
80 /* translators: 1: before text/html, 2: after text/html. */
81 $text['tag'] = esc_html__( '%1$sPosts tagged %2$s', 'catch-breadcrumb' ); // text for a tag page
82 /* translators: 1: before text/html, 2: after text/html. */
83 $text['author'] = esc_html__( '%1$sView all posts by %2$s', 'catch-breadcrumb' ); // text for an author page
84 $text['404'] = esc_html__( 'Error 404', 'catch-breadcrumb' ); // text for the 404 page
85 /* === END OF OPTIONS === */
86 global $post, $paged, $page;
87 $homeLink = home_url( '/' );
88 $style = '';
89 if( $style ){
90 echo '<style>' . $style . '</style>';
91 }
92 $linkAttr = ' rel="v:url" property="v:title"';
93 $home_icon = '';
94
95 if ( $catch_breadcrumb_options['breadcrumb_home_icon'] ){
96 $home_icon = '<span class="fa fa-home"></span>';
97 }
98
99 $link_home = $atts['linkBefore'] . '<a' . $linkAttr . ' href="%1$s">'. $home_icon . '%2$s</a>' . wp_kses_post( $catch_breadcrumb_options['breadcrumb_separator'] ) . $atts['linkAfter'];
100
101 $link = $atts['linkBefore'] . '<a' . $linkAttr . ' href="%1$s">' . '%2$s</a>' . wp_kses_post( $catch_breadcrumb_options['breadcrumb_separator'] ) . $atts['linkAfter'];
102
103 if ( is_front_page() ) {
104 if ( $catch_breadcrumb_options['breadcrumb_display_home'] ) {
105 echo '
106 <div class="catch-breadcrumb breadcrumb-area custom">
107 <nav class="entry-breadcrumbs">';
108 echo $atts['linkBefore'] . '<a href="' . esc_url( $homeLink ) . '">' . $home_icon . $text['home'] . '</a>' . $atts['linkAfter'];
109 echo '</nav><!-- .entry-breadcrumbs -->
110 </div><!-- .breadcrumb-area -->';$atts['linkAfter'];
111 }
112 } else {
113
114 echo '<div class="catch-breadcrumb breadcrumb-area custom">
115 <nav class="entry-breadcrumbs">';
116 echo sprintf( $link_home, esc_url( $homeLink ), $text['home'] ); // WPCS: XSS OK.
117
118 if ( is_home() ) {
119 echo $content . esc_html( get_the_title( get_option( 'page_for_posts', true ) ) ) . $atts['after']; // WPCS: XSS OK.
120 } elseif ( is_category() ) {
121 $thisCat = get_category( get_query_var( 'cat' ), false );
122 if ( $thisCat->parent != 0 ) {
123 $cats = get_category_parents( $thisCat->parent, true, false );
124 $cats = str_replace( '<a', $atts['linkBefore'] . '<a' . $linkAttr, $cats );
125 $cats = str_replace( '</a>', '</a>' . wp_kses_post( $catch_breadcrumb_options['breadcrumb_separator']) . $atts['linkAfter'], $cats );
126 echo $cats;
127 // WPCS: XSS OK.
128 }
129
130 the_archive_title( $content . sprintf( $text['category'], '<span class="archive-text">', '</span>' , $atts['after'] ));
131
132 } elseif ( is_search() ) {
133 echo $content . sprintf( $text['search'], '<span class="search-text">', '</span>' . get_search_query() ) . $atts['after'];
134 // WPCS: XSS OK.
135 } elseif ( is_day() ) {
136 echo sprintf( $link, esc_url( get_year_link( get_the_time( __( 'Y', 'catch-breadcrumb' ) ) ) ), esc_html( get_the_time( __( 'Y', 'catch-breadcrumb' ) ) ) ) ;
137 // WPCS: XSS OK.
138 echo sprintf( $link, esc_url( get_month_link( get_the_time( __( 'Y', 'catch-breadcrumb' ) ) ) ), esc_html(get_the_time( __( 'F', 'catch-breadcrumb' ) ) ) );
139 // WPCS: XSS OK.
140 echo $content . esc_html( get_the_time( __( 'd', 'catch-breadcrumb' ) ) ) . $atts['after'];
141 // WPCS: XSS OK.
142 } elseif ( is_month() ) {
143 echo sprintf( $link, esc_url( get_year_link( get_the_time( __( 'Y', 'catch-breadcrumb' ) ) ) ), esc_html( get_the_time( __( 'Y', 'catch-breadcrumb' ) ) ) ) ;
144 // WPCS: XSS OK.
145 echo $content . esc_html( get_the_time( __( 'F', 'catch-breadcrumb' ) ) ) . $atts['after'];
146 // WPCS: XSS OK.
147 } elseif ( is_year() ) {
148 echo $content . esc_html( get_the_time( __( 'Y', 'catch-breadcrumb' ) ) ) . $atts['after'];
149 // WPCS: XSS OK.
150 } elseif ( is_single() && !is_attachment() ) {
151 if ( get_post_type() != 'post' ) {
152 $post_type = get_post_type_object( get_post_type() );
153 $post_link = get_post_type_archive_link( $post_type->name );
154 printf( $link, esc_url( $post_link ), esc_html( $post_type->labels->singular_name ) );
155 // WPCS: XSS OK.
156 echo $content . esc_html( get_the_title() ) . $atts['after'];
157 // WPCS: XSS OK
158 }
159 else {
160 $cat = get_the_category();
161 $cat = $cat[0];
162 $cats = get_category_parents( $cat, true, '' );
163 $cats = preg_replace( "#^(.+)$#", "$1", $cats );
164 $cats = str_replace( '<a', $atts['linkBefore'] . '<a' . $linkAttr, $cats );
165 $cats = str_replace( '</a>', '</a>' . wp_kses_post( $catch_breadcrumb_options['breadcrumb_separator'] ) . $atts['linkAfter'], $cats );
166 echo $cats;
167 // WPCS: XSS OK.
168
169 echo $content . esc_html( get_the_title() ) . $atts['after'];
170 // WPCS: XSS OK.
171 }
172 } elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
173 $post_type = get_post_type_object( get_post_type() );
174 echo isset( $post_type->labels->singular_name ) ? $content. esc_html( $post_type->labels->singular_name ) . $atts['after']: '';
175 // WPCS: XSS OK.
176 } elseif ( is_attachment() ) {
177 $parent = get_post( $post->post_parent );
178 $cat = get_the_category( $parent->ID );
179 if ( isset( $cat[0] ) ) {
180 $cat = $cat[0];
181 }
182 if ( $cat ) {
183 $cats = get_category_parents( $cat, true );
184 $cats = str_replace( '<a', $atts['linkBefore'] . '<a' . $linkAttr, $cats );
185 $cats = str_replace( '</a>', '</a>' . wp_kses_post( $catch_breadcrumb_options['breadcrumb_separator'] ) . $atts['linkAfter'], $cats );
186 echo $cats;
187 // WPCS: XSS OK.
188 }
189 printf( $link, esc_url( get_permalink( $parent ) ), esc_html( $parent->post_title ) );
190 // WPCS: XSS OK.
191 echo $content . esc_html( get_the_title() ) . $atts['after'];
192 // WPCS: XSS OK.
193 } elseif ( is_page() && ! $post->post_parent ) {
194 echo $content. esc_html( get_the_title() ) . $atts['after']; // WPCS: XSS O
195 } elseif ( is_page() && $post->post_parent ) {
196 $parent_id = $post->post_parent;
197 $breadcrumbs = array();
198 while( $parent_id ) {
199 $page_child = get_post( $parent_id );
200 $breadcrumbs[] = sprintf( $link, esc_url( get_permalink( $page_child->ID ) ), esc_html( get_the_title( $page_child->ID ) ) );
201 $parent_id = $page_child->post_parent;
202 }
203 $breadcrumbs = array_reverse( $breadcrumbs );
204 for( $i = 0; $i < count( $breadcrumbs ); $i++ ) {
205 echo $breadcrumbs[$i];
206 // WPCS: XSS OK.
207 }
208 echo $content . esc_html( get_the_title() ) . $atts['after'];
209 // WPCS: XSS OK.
210 } elseif ( is_tag() ) {
211 the_archive_title( $content . sprintf( $text['tag'], '<span class="tag-text">', '</span>' ), $atts['after'] );
212 // WPCS: XSS OK
213 } elseif ( is_author() ) {
214 global $author;
215 $userdata = get_userdata( $author );
216 echo $content . sprintf( $text['author'], '<span class="author-text">', '</span>' . $userdata->display_name ) . $atts['after'];
217 // WPCS: XSS OK
218 } elseif ( is_404() ) {
219 echo $content . $text['404'] . $atts['after'];
220 // WPCS: XSS OK.
221 }
222 if ( get_query_var( 'paged' ) ) {
223 if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) {
224 echo ' (';
225 }
226
227 /* translators: %s: current page number. */
228 echo sprintf( esc_html__( 'Page %s', 'catch-breadcrumb' ), absint( max( $paged, $page ) ) );
229 if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) {
230 echo ')';
231 }
232
233 }
234 echo '</nav><!-- .entry-breadcrumbs -->
235 </div><!-- .breadcrumb-area -->';
236 }
237 }
238
239 }
240
241 new Catch_Breadcrumb_Shortcode();
242
243
244