extras.php
8.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
<?php
/**
* Custom functions that act independently of the theme templates
*
* Eventually, some of the functionality here could be replaced by core features.
*
* @package Understrap
*/
// Exit if accessed directly.
defined( 'ABSPATH' ) || exit;
add_filter( 'body_class', 'understrap_body_classes' );
if ( ! function_exists( 'understrap_body_classes' ) ) {
/**
* Adds custom classes to the array of body classes.
*
* @param array $classes Classes for the body element.
*
* @return array
*/
function understrap_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';
}
// Adds a body class based on the presence of a sidebar.
$sidebar_pos = get_theme_mod( 'understrap_sidebar_position' );
if ( is_page_template(
array(
'page-templates/fullwidthpage.php',
'page-templates/no-title.php',
)
) ) {
$classes[] = 'understrap-no-sidebar';
} elseif (
is_page_template(
array(
'page-templates/both-sidebarspage.php',
'page-templates/left-sidebarpage.php',
'page-templates/right-sidebarpage.php',
)
)
) {
$classes[] = 'understrap-has-sidebar';
} elseif ( 'none' !== $sidebar_pos ) {
$classes[] = 'understrap-has-sidebar';
} else {
$classes[] = 'understrap-no-sidebar';
}
return $classes;
}
}
if ( function_exists( 'understrap_adjust_body_class' ) ) {
/*
* understrap_adjust_body_class() deprecated in v0.9.4. We keep adding the
* filter for child themes which use their own understrap_adjust_body_class.
*/
add_filter( 'body_class', 'understrap_adjust_body_class' );
}
// Filter custom logo with correct classes.
add_filter( 'get_custom_logo', 'understrap_change_logo_class' );
if ( ! function_exists( 'understrap_change_logo_class' ) ) {
/**
* Replaces logo CSS class.
*
* @param string $html Markup.
*
* @return string
*/
function understrap_change_logo_class( $html ) {
$html = str_replace( 'class="custom-logo"', 'class="img-fluid"', $html );
$html = str_replace( 'class="custom-logo-link"', 'class="navbar-brand custom-logo-link"', $html );
$html = str_replace( 'alt=""', 'title="Home" alt="logo"', $html );
return $html;
}
}
if ( ! function_exists( 'understrap_pingback' ) ) {
/**
* Add a pingback url auto-discovery header for single posts of any post type.
*/
function understrap_pingback() {
if ( is_singular() && pings_open() ) {
echo '<link rel="pingback" href="' . esc_url( get_bloginfo( 'pingback_url' ) ) . '">' . "\n";
}
}
}
add_action( 'wp_head', 'understrap_pingback' );
if ( ! function_exists( 'understrap_mobile_web_app_meta' ) ) {
/**
* Add mobile-web-app meta.
*/
function understrap_mobile_web_app_meta() {
echo '<meta name="mobile-web-app-capable" content="yes">' . "\n";
echo '<meta name="apple-mobile-web-app-capable" content="yes">' . "\n";
echo '<meta name="apple-mobile-web-app-title" content="' . esc_attr( get_bloginfo( 'name' ) ) . ' - ' . esc_attr( get_bloginfo( 'description' ) ) . '">' . "\n";
}
}
add_action( 'wp_head', 'understrap_mobile_web_app_meta' );
if ( ! function_exists( 'understrap_default_body_attributes' ) ) {
/**
* Adds schema markup to the body element.
*
* @param array<string,string> $atts An associative array of attributes.
* @return array<string,string>
*/
function understrap_default_body_attributes( $atts ) {
$atts['itemscope'] = '';
$atts['itemtype'] = 'http://schema.org/WebSite';
return $atts;
}
}
add_filter( 'understrap_body_attributes', 'understrap_default_body_attributes' );
// Escapes all occurances of 'the_archive_description'.
add_filter( 'get_the_archive_description', 'understrap_escape_the_archive_description' );
if ( ! function_exists( 'understrap_escape_the_archive_description' ) ) {
/**
* Escapes the description for an author or post type archive.
*
* @param string $description Archive description.
* @return string Maybe escaped $description.
*/
function understrap_escape_the_archive_description( $description ) {
if ( is_author() || is_post_type_archive() ) {
return wp_kses_post( $description );
}
/*
* All other descriptions are retrieved via term_description() which returns
* a sanitized description.
*/
return $description;
}
} // End of if function_exists( 'understrap_escape_the_archive_description' ).
// Escapes all occurances of 'the_title()' and 'get_the_title()'.
add_filter( 'the_title', 'understrap_kses_title' );
// Escapes all occurances of 'the_archive_title' and 'get_the_archive_title()'.
add_filter( 'get_the_archive_title', 'understrap_kses_title' );
if ( ! function_exists( 'understrap_kses_title' ) ) {
/**
* Sanitizes data for allowed HTML tags for titles.
*
* @param string $data Title to filter.
* @return string Filtered title with allowed HTML tags and attributes intact.
*/
function understrap_kses_title( $data ) {
// Get allowed tags and protocols.
$allowed_tags = wp_kses_allowed_html( 'post' );
$allowed_protocols = wp_allowed_protocols();
if (
in_array( 'polylang/polylang.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ), true )
|| in_array( 'polylang-pro/polylang.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ), true )
) {
if ( ! in_array( 'data', $allowed_protocols, true ) ) {
$allowed_protocols[] = 'data';
}
}
if ( has_filter( 'understrap_kses_title' ) ) {
/**
* Filters the allowed HTML tags and attributes in titles.
*
* @param array<string,array<string,bool>> $allowed_tags Allowed HTML tags and attributes in titles.
*/
$allowed_tags = apply_filters_deprecated( 'understrap_kses_title', array( $allowed_tags ), '1.2.0' );
}
return wp_kses( $data, $allowed_tags, $allowed_protocols );
}
} // End of if function_exists( 'understrap_kses_title' ).
if ( ! function_exists( 'understrap_hide_posted_by' ) ) {
/**
* Hides the posted by markup in `understrap_posted_on()`.
*
* @since 1.0.0
*
* @param string $byline Posted by HTML markup.
* @return string Maybe filtered posted by HTML markup.
*/
function understrap_hide_posted_by( $byline ) {
if ( is_author() ) {
return '';
}
return $byline;
}
}
add_filter( 'understrap_posted_by', 'understrap_hide_posted_by' );
add_filter( 'excerpt_more', 'understrap_custom_excerpt_more' );
if ( ! function_exists( 'understrap_custom_excerpt_more' ) ) {
/**
* Removes the ... from the excerpt read more link
*
* @param string $more The excerpt.
*
* @return string
*/
function understrap_custom_excerpt_more( $more ) {
if ( ! is_admin() ) {
$more = '';
}
return $more;
}
}
add_filter( 'wp_trim_excerpt', 'understrap_all_excerpts_get_more_link' );
if ( ! function_exists( 'understrap_all_excerpts_get_more_link' ) ) {
/**
* Adds a custom read more link to all excerpts, manually or automatically generated
*
* @param string $post_excerpt Posts's excerpt.
*
* @return string
*/
function understrap_all_excerpts_get_more_link( $post_excerpt ) {
if ( is_admin() || ! get_the_ID() ) {
return $post_excerpt;
}
$permalink = esc_url( get_permalink( (int) get_the_ID() ) ); // @phpstan-ignore-line -- post exists
// return $post_excerpt . ' [...]<a class="understrap-read-more-link" href="' . $permalink . '">' . __(
// ' Read More',
// 'understrap'
// ) . '<span class="scr{een-reader-text"> from ' . get_the_title( get_the_ID() ) . '</span></a>';
if($post_excerpt == ""){
return $post_excerpt;
}else{
return $post_excerpt."... ";
}
}
}
add_filter( 'excerpt_length', function( $length ) { return 35; } );
function wpmldp_translate_date_format( $date ) {
//Create array with dates
$month_dates = array();
$month_dates[] = '1st';
$month_dates[] = '2nd';
$month_dates[] = '3rd';
for($d=4; $d<=30; $d++) {
$month_dates[] = $d.'th';
}
$month_dates[] = '31st';
//Register strings on String Translator
foreach( $month_dates as $month_date ) {
do_action( 'wpml_register_single_string', 'Date Formats', 'Month Date (WPML) - '.$month_date, $month_date);
}
//Translate strings
if( in_array($date, $month_dates) ) {
$date = apply_filters( 'wpml_translate_single_string', $date, 'Date Formats', 'Month Date (WPML) - '.$date);
}
return $date;
}
add_filter( 'wp_date', 'wpmldp_translate_date_format', 10, 1 );