Passed
Push — master ( 3dd8bf...51201f )
by SILENT
02:24
created

functions.php (4 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * Strip functions and definitions
4
 *
5
 * @link https://developer.wordpress.org/themes/basics/theme-functions/
6
 *
7
 * @package WordPress
8
 * @subpackage Strip
9
 */
10
11
	// Set the content width based on the theme's design and stylesheet.
12
if ( ! isset( $content_width ) ) {
13
		$content_width = 1920;
14
} /* pixels */
15
16
if ( ! function_exists( 'strip_setup' ) ) :
17
	/**
18
	 * Sets up theme defaults and registers support for various WordPress features.
19
	 *
20
	 * Note that this function is hooked into the after_setup_theme hook, which runs
21
	 * before the init hook. The init hook is too late for some features, such as indicating
22
	 * support post thumbnails.
23
	 */
24
	function strip_setup() {
25
		/**
26
* Remove some default WordPress dashboard widgets
27
* an example custom dashboard widget
28
* adding custom login css
29
* changing text in footer of admin
30
*/
31
		require_once( 'assets/admin.php' );
32
		/**
33
* Make theme available for translation
34
* Translations can be filed in the /languages/ directory
35
* If you're building a theme based on strip, use a find and replace
36
* to change 'strip' to the name of your theme in all the template files
37
*/
38
		load_theme_textdomain( 'strip', get_template_directory() . '/languages' );
39
40
		// Add default posts and comments RSS feed links to head.
41
		add_theme_support( 'automatic-feed-links' );
42
43
		/**
44
* Enable support for title-tag. Allows themes to add document title tag to HTML <head> (since version 4.1.).
45
*/
46
		add_theme_support( 'title-tag' );
47
48
		/**
49
* Enable support for custom logo.
50
*
51
* @since strip 1.0
52
*/
53
		add_theme_support( 'custom-logo', array(
54
			'height'      => 156,
55
			'width'       => 312,
56
			'flex-height' => true,
57
			'flex-width'  => true,
58
			)
59
		);
60
61
		/**
62
* Enable support for Post Thumbnails on posts and pages
63
*
64
* @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
65
*/
66
		add_theme_support( 'post-thumbnails' );
67
		add_image_size( 'strip-featured-image', 1920, 960, true );
68
		add_image_size( 'strip-large', 1920, 960, true ); // cropped.
69
		add_image_size( 'strip-medium', 624, 312, true ); // cropped.
70
		add_image_size( 'strip-thumbnail', 312, 156, true ); // cropped.
71
72
		/**
73
		 * Remove paragraph tags around images.
74
		 *
75
		 * @param array $content filter p tags.
76
		 * @return $content
77
		 * @link https://css-tricks.com/snippets/wordpress/remove-paragraph-tags-from-around-images/
78
		 * @see http://codex.wordpress.org/Function_Reference/wpautop gets the same result but removes line blocks: remove_filter( 'the_content', 'wpautop' );
79
		 */
80
		function filter_ptags_on_images( $content ) {
81
			return preg_replace( '/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content );
82
		}
83
		add_filter( 'the_content', 'filter_ptags_on_images' );
84
85
		/**
86
	 	* This theme uses wp_nav_menu() in one location.
87
	 	*/
88
		register_nav_menus(array(
89
			'primary' => __( 'Primary Menu', 'strip' ),
90
		));
91
92
		/*
93
		* Switch default core markup for search form, comment form, and comments
94
		* to output valid HTML5.
95
		*/
96
		add_theme_support( 'html5', array(
97
			'search-form',
98
			'comment-form',
99
			'comment-list',
100
			'gallery',
101
			'caption',
102
			'widgets',
103
		) );
104
105
		/**
106
	 * Enable support for Post Formats
107
	 */
108
		add_theme_support( 'post-formats', array(
109
			'image',
110
			'video',
111
			'quote',
112
			'link',
113
			'gallery',
114
			'audio',
115
			'chat',
116
		) );
117
118
		// Setup the WordPress core custom background feature.
119
		add_theme_support('custom-background', apply_filters('strip_custom_background_args', array(
120
			'default-color' => 'ffffff',
121
			'default-image' => '',
122
		) ) );
123
	}
124
125
	/**
126
	* This theme styles the visual editor to resemble the theme style,
127
	* specifically font, colors, icons, and column width.
128
	*/
129
	add_editor_style( array( '/assets/css/editor-style.css', '/assets/fonts/fenix.css' ) );
130
131
	// Indicate widget sidebars can use selective refresh in the Customizer.
132
	// See https://make.wordpress.org/core/2016/03/22/implementing-selective-refresh-support-for-widgets/ for detail.
133
	add_theme_support( 'customize-selective-refresh-widgets' );
134
endif; // strip_setup.
135
add_action( 'after_setup_theme', 'strip_setup' );
136
137
/**
138
 * Register widgetized area and update sidebar with default widgets
139
 */
140
function strip_widgets_init() {
141
	register_sidebar(array(
142
		'name'          => __( 'Main Sidebar', 'strip' ),
143
		'id'            => 'sidebar',
144
		'description'   => __( 'The main body widget area', 'strip' ),
145
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
146
		'after_widget'	=> '</aside>',
147
		'before_title'	=> '<h2 class="widget-title">',
148
		'after_title'   => '</h2>',
149
	));
150
151
	// First footer widget area, located in the footer. Empty by default.
152
	register_sidebar( array(
153
		'name'          => __( 'First Footer Widget', 'strip' ),
154
		'id'            => 'first-footer-widget',
155
		'description'   => __( 'The first footer widget', 'strip' ),
156
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
157
		'after_widget'	=> '</aside>',
158
		'before_title'	=> '<h3 class="widget-title">',
159
		'after_title'   => '</h3>',
160
	));
161
162
	// Second Footer Widget Area, located in the footer. Empty by default.
163
	register_sidebar(array(
164
		'name'          => __( 'Second Footer Widget', 'strip' ),
165
		'id'            => 'second-footer-widget',
166
		'description'   => __( 'The second footer widget', 'strip' ),
167
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
168
		'after_widget'	=> '</aside>',
169
		'before_title'	=> '<h3 class="widget-title">',
170
		'after_title'   => '</h3>',
171
	));
172
173
	// Third Footer Widget Area, located in the footer. Empty by default.
174
	register_sidebar(array(
175
		'name'          => __( 'Third Footer Widget', 'strip' ),
176
		'id'            => 'third-footer-widget',
177
		'description'   => __( 'The third footer widget', 'strip' ),
178
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
179
		'after_widget'	=> '</aside>',
180
		'before_title'	=> '<h3 class="widget-title">',
181
		'after_title'   => '</h3>',
182
	));
183
184
	// Fourth Footer Widget Area, located in the footer. Empty by default.
185
	register_sidebar(array(
186
		'name'           => __( 'Fourth Footer Widget', 'strip' ),
187
		'id'             => 'fourth-footer-widget',
188
		'description'    => __( 'The fourth footer widget', 'strip' ),
189
		'before_widget'  => '<aside id="%1$s" class="widget %2$s">',
190
		'after_widget'	 => '</aside>',
191
		'before_title'	 => '<h3 class="widget-title">',
192
		'after_title'    => '</h3>',
193
	));
194
195
}
196
add_action( 'widgets_init', 'strip_widgets_init' );
197
198
/**
199
 * Handles JavaScript detection.
200
 *
201
 * Adds a `js` class to the root `<html>` element when JavaScript is detected.
202
 *
203
 * @since Strip 1.0
204
 */
205
function strip_javascript_detection() {
206
	echo "<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>\n";
207
}
208
add_action( 'wp_head', 'strip_javascript_detection', 0 );
209
210
/**
211
 * Enqueue_styles for custom fonts.
212
 */
213
function strip_scripts() {
214
	// add custom font here if any.
215
	wp_enqueue_style( 'fenix', get_template_directory_uri() . '/assets/fonts/fenix.css', array(), null );
216
217
	wp_enqueue_style( 'inconsolata', get_template_directory_uri() . '/assets/fonts/inconsolata.css', array(), null );
218
219
	// Theme stylesheet.
220
	wp_enqueue_style( 'strip-style', get_stylesheet_uri() );
221
222
	// Load the Internet Explorer specific stylesheet. Conditional stylesheet — tested and works with IE9 on Windows7.
223
	wp_enqueue_style( 'strip-ie', get_template_directory_uri() . 'assets/css/ie.css', array( 'strip-style' ), '20160305' );
224
	wp_style_add_data( 'strip-ie', 'conditional', 'lt IE 10' );
225
226
	if ( has_nav_menu( 'primary' ) ) {
227
		wp_enqueue_script( 'strip-navigation', get_template_directory_uri() . '/assets/js/min/navigation-min.js', array(), '1.0', true );
228
	}
229
230
	// Load the html5 shiv.
231
	wp_enqueue_script( 'strip-html5', get_template_directory_uri() . '/assets/js/min/html5-min.js', array(), '3.7.3' );
232
	wp_script_add_data( 'strip-html5', 'conditional', 'lt IE 9' );
233
234
	wp_enqueue_script( 'strip-skip-link-focus-fix', get_template_directory_uri() . '/assets/js/min/skip-link-focus-fix-min.js', array(), '1.0', true );
235
236
	if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
237
		wp_enqueue_script( 'comment-reply' );
238
239
			// toggle comments js.
240
			wp_enqueue_script( 'strip-toggle-comments', get_template_directory_uri() . '/assets/js/min/toggle-comments-min.js', array( 'jquery' ), '1.2', true );
241
242
		if ( is_single() && wp_attachment_is_image() ) {
243
			wp_enqueue_script( 'strip-keyboard-image-navigation', get_template_directory_uri() . '/assets/js/min/keyboard-image-navigation-min.js', array( 'jquery' ), '20160412', true );
244
		}
245
	}
246
}
247
248
add_action( 'wp_enqueue_scripts', 'strip_scripts' );
249
250
/**
251
 * Implement the Custom Header feature.
252
 */
253
require get_template_directory() . '/inc/custom-header.php';
254
255
/**
256
 * Custom template tags for this theme.
257
 */
258
require get_template_directory() . '/inc/template-tags.php';
259
260
/**
261
 * Custom functions that act independently of the theme templates.
262
 */
263
require get_template_directory() . '/inc/extras.php';
264
265
/**
266
 * Customizer additions.
267
 */
268
require get_template_directory() . '/inc/customizer.php';
269
270
/**
271
 * Load Jetpack compatibility file.
272
 */
273
require get_template_directory() . '/inc/jetpack.php';
274
275
add_action( 'wp_enqueue_scripts', 'enqueue_royal_sliders' );
276
/**
277
 * Register RoyalSLider
278
 */
279
function enqueue_royal_sliders() {
280
	if ( function_exists( 'register_new_royalslider_files' ) ) {
281
		// you could try this: if ( is_single() && is_archive() ) { but you don't really need it.
282
			register_new_royalslider_files( 1 ); // 1 is RoyalSlider configuration number
283
		// add } if use is_single etc.
284
	}
285
}
286
287
/**
288
 * Get the first image from each post and resize it.
289
 *
290
 * @return string $first_img.
291
 * @link https://css-tricks.com/snippets/wordpress/get-the-first-image-from-a-post/
292
 * @link https://gist.github.com/SilentComics/0a7ea47942eb759dbb48eac2b7be1bbc/
293
 */
294
function get_first_image() {
295
	$post  = get_post();
296
	$first_img = '';
297
	preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', do_shortcode( $post->post_content, 'gallery' ), $matches );
298
	  $first_img = isset( $matches[1][0] ) ? $matches[1][0] : null;
299
300
	if ( empty( $first_img ) ) {
301
			return get_template_directory_uri() . '/assets/images/empty.png'; // path to default image.
302
	}
303
304
		// Now we have the $first_img but we want the thumbnail of that image.
305
		$explode = explode( '.', $first_img );
306
		$count = count( $explode );
307
		$size = '-624x312'; // Panel ratio (2:1) 312x156 for lighther page, 624x312 for retina; use add_image_size() and Force Regenerate Thumbnails plugin when changing sizes.
308
		$explode[ $count -2 ] = $explode[ $count -2 ] . '' . $size;
309
		$thumb_img = implode( '.', $explode );
310
		return $thumb_img;
311
}
312
	add_filter( 'get_first_image', 'thumbnail' );
313
314
/**
315
 * Register Custom Post Type for comics
316
 */
317
function comic_post_type() {
318
319
	$labels = array(
320
		'name'                       => _x( 'Comics', 'Post Type General Name', 'strip' ),
321
		'singular_name'              => _x( 'Comic', 'Post Type Singular Name', 'strip' ),
322
		'menu_name'                  => _x( 'Comics', 'admin menu', 'strip' ),
323
		'name_admin_bar'             => _x( 'Comic', 'add new on admin bar', 'strip' ),
324
		'parent_item_colon'	         => __( 'Parent Comic:', 'strip' ),
325
		'all_items'                  => __( 'All Comics', 'strip' ),
326
		'add_new_item'               => __( 'Add New Comic', 'strip' ),
327
		'add_new'                    => __( 'Add New Comic', 'strip' ),
328
		'new_item'                   => __( 'New Comic', 'strip' ),
329
		'edit_item'                  => __( 'Edit Comic', 'strip' ),
330
		'update_item'                => __( 'Update Comic', 'strip' ),
331
		'view_item'                  => __( 'View Comic', 'strip' ),
332
		'search_items'               => __( 'Search Item', 'strip' ),
333
		'not_found'                  => __( 'No Comics found', 'strip' ),
334
		'not_found_in_trash'         => __( 'No Comics found in Trash', 'strip' ),
335
		'items_list'                 => __( 'Comics list', 'strip' ),
336
		'items_list_navigation'      => __( 'Comics list navigation', 'strip' ),
337
		'filter_items_list'          => __( 'Filter Comics list', 'strip' ),
338
	);
339
340
	$supports = array(
341
	'title',
342
	'editor',
343
	'excerpt',
344
	'trackbacks',
345
	'custom-fields',
346
	'comments',
347
	'revisions',
348
	'thumbnail',
349
	'author',
350
	'archive',
351
	);
352
353
	$args = array(
354
		'label'                      => __( 'Comic', 'strip' ),
355
		'description'                => __( 'Publish Comics and Webcomics', 'strip' ),
356
		'labels'                     => $labels,
357
		'supports'                   => $supports,
358
		'taxonomies'                 => array( 'story', 'story_term', 'draft' ),
359
		'hierarchical'               => true,
360
		'public'                     => true,
361
		'show_ui'                    => true,
362
		'show_in_menu'               => true,
363
		'menu_position'              => 20,
364
		'menu_icon'                  => 'dashicons-book-alt',
365
		'show_in_admin_bar'	         => true,
366
		'show_in_nav_menus'	         => true,
367
		'can_export'                 => true,
368
		'has_archive'                => true,
369
		'feeds'                      => true,
370
		'exclude_from_search'        => false,
371
		'rewrite'                    => array( 'slug' => 'stories', 'with_front' => true ),
372
		'publicly_queryable'	       => true,
373
		'capability_type'            => 'post',
374
	);
375
	register_post_type( 'comic', $args );
376
}
377
378
// Hook into the 'init' action.
379
add_action( 'init', 'comic_post_type', 0 ); // End of register_cpt_comic().
380
381
	/**
382
	 * Register Custom Taxonomy 'story'
383
	 */
384
function comic_story_taxonomy() {
385
	$labels = array(
386
		'name'                       => _x( 'Comic Story', 'Taxonomy General Name', 'strip' ),
387
		'singular_name'              => _x( 'Comic Story', 'Taxonomy Singular Name', 'strip' ),
388
		'menu_name'                  => __( 'Comic Stories', 'strip' ),
389
		'all_items'                  => __( 'All Comic Stories', 'strip' ),
390
		'parent_item'                => __( 'Parent Story', 'strip' ),
391
		'parent_item_colon'          => __( 'Parent Story:', 'strip' ),
392
		'new_item_name'              => __( 'New Comic Story', 'strip' ),
393
		'add_new_item'               => __( 'Add New Story', 'strip' ),
394
		'edit_item'                  => __( 'Edit Story', 'strip' ),
395
		'update_item'                => __( 'Update Story', 'strip' ),
396
		'view_item'                  => __( 'View Item', 'strip' ),
397
		'separate_items_with_commas' => __( 'Separate stories with commas', 'strip' ),
398
		'add_or_remove_items'        => __( 'Add or Remove Stories', 'strip' ),
399
		'choose_from_most_used'      => __( 'Choose from the most used stories', 'strip' ),
400
		'popular_items'              => __( 'Popular comic stories', 'strip' ),
401
		'search_items'               => __( 'Search Stories', 'strip' ),
402
		'not_found'                  => __( 'No comic Stories found', 'strip' ),
403
		'items_list'                 => __( 'Comic Stories list', 'strip' ),
404
		'items_list_navigation'      => __( 'Comic Stories list navigation', 'strip' ),
405
	);
406
	$args = array(
407
		'labels'                     => $labels,
408
		'label'                      => 'Stories',
409
		'hierarchical'               => true,
410
		'public'                     => true,
411
		'show_ui'                    => true,
412
		'show_admin_column'          => true,
413
		'show_in_nav_menus'          => true,
414
		'show_tagcloud'              => true,
415
		'query_var'	                 => true,
416
		'rewrite'                    => array( 'slug' => 'story' ),
417
	);
418
	register_taxonomy( 'story', array( 'comic' ), $args );
419
	register_taxonomy_for_object_type( 'story', 'comic' );
420
}
421
422
// Hook into the 'init' action.
423
add_action( 'init', 'comic_story_taxonomy', 0 );
424
425
/**
426
 * Function strip rewrite rules.
427
 */
428
function strip_rewrite_rules() {
429
	flush_rewrite_rules();
430
}
431
/* Flush rewrite rules for custom post types. */
432
add_action( 'after_switch_theme', 'strip_rewrite_rules' );
433
434
// Add Print taxonomy, NOT hierarchical (like tags)
435
// Register Custom Taxonomy.
436
	$labels = array(
437
		'name'                       => _x( 'Prints', 'Taxonomy General Name', 'strip' ),
438
		'singular_name'              => _x( 'Print', 'Taxonomy Singular Name', 'strip' ),
439
		'menu_name'                  => __( 'Print', 'strip' ),
440
		'all_items'                  => __( 'All Prints', 'strip' ),
441
		'parent_item'                => __( 'Parent Print', 'strip' ),
442
		'parent_item_colon'          => __( 'Parent Print:', 'strip' ),
443
		'new_item_name'              => __( 'New Print Name', 'strip' ),
444
		'add_new_item'               => __( 'Add New Print', 'strip' ),
445
		'edit_item'                  => __( 'Edit Print', 'strip' ),
446
		'update_item'                => __( 'Update Pring', 'strip' ),
447
		'view_item'                  => __( 'View Print', 'strip' ),
448
		'separate_items_with_commas' => __( 'Separate prints with commas', 'strip' ),
449
		'add_or_remove_items'        => __( 'Add or remove prints', 'strip' ),
450
		'choose_from_most_used'      => __( 'Choose from the most used', 'strip' ),
451
		'popular_items'              => __( 'Popular Prints', 'strip' ),
452
		'search_items'               => __( 'Search Prints', 'strip' ),
453
		'not_found'                  => __( 'Not Found', 'strip' ),
454
		'no_terms'                   => __( 'No prints', 'strip' ),
455
		'items_list'                 => __( 'Prints list', 'strip' ),
456
		'items_list_navigation'      => __( 'Prints list navigation', 'strip' ),
457
	);
458
459
	$args = array(
460
		'labels'                     => $labels,
461
		'hierarchical'               => false,
462
		'public'                     => true,
463
		'show_ui'                    => true,
464
		'show_admin_column'          => true,
465
		'show_in_nav_menus'          => true,
466
		'show_tagcloud'              => true,
467
	);
468
	register_taxonomy( 'print', array( 'comic' ), $args );
469
470
	/*
471
	* WooCommerce Hooks
472
	* Layout
473
	*/
474
	remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
475
	remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
476
	remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );
477
	// remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 10 ); // removes woo pagination.
478
	remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
479
	remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
480
481
	add_action( 'woocommerce_before_main_content', 'strip_wrapper_start', 10 );
482
	add_action( 'woocommerce_after_main_content', 'strip_wrapper_end', 10 );
483
484
		 /**
485
		  * WooCommerce wrapper
486
		  */
487
	function strip_wrapper_start() {
488
		echo '<section id="content" class="woocommerce-content" role="main"><div class="entry-wrap wrap clear">';
489
	}
490
491
	/**
492
	 * End WooCommerce wrapper
493
	 */
494
	function strip_wrapper_end() {
495
		echo '</section>';
496
	}
497
498
	add_action( 'after_setup_theme', 'woocommerce_support' );
499
	/**
500
	 * Add WooCommerce support
501
	 * https://docs.woothemes.com/document/third-party-custom-theme-compatibility/*
502
	 */
503
	function woocommerce_support() {
504
		add_theme_support( 'woocommerce' );
505
	}
506
507
	/**
508
	 * Enqueue the theme's own style for WooCommerce.
509
	 */
510
	function wp_enqueue_woocommerce_style() {
511
512
			wp_register_style( 'strip-woocommerce', get_template_directory_uri() . '/assets/css/woocommerce-min.css' );
513
		if ( class_exists( 'woocommerce' ) ) {
514
			wp_enqueue_style( 'strip-woocommerce' );
515
		}
516
	}
517
518
	add_action( 'wp_enqueue_scripts', 'wp_enqueue_woocommerce_style' );
519
520
	/**
521
* Optimize WooCommerce Scripts
522
* Remove WooCommerce Generator tag, styles, and scripts from non WooCommerce pages.
523
*
524
* @link http://gregrickaby.com/remove-woocommerce-styles-and-scripts/
525
* @link https://wordimpress.com/how-to-load-woocommerce-scripts-and-styles-only-in-shop/
526
* @link https://gist.github.com/DevinWalker/7621777
527
* @link http://dessky.com/blog/disable-woocommerce-scripts-and-styles/
528
*/
529
	add_action( 'wp_enqueue_scripts', 'strip_manage_woocommerce_styles', 99 );
530
531
	/**
532
	 * Remove some WooCommerce queries.
533
	 */
534
	function strip_manage_woocommerce_styles() {
535
		// remove generator meta tag.
536
		remove_action( 'wp_head', array( 'woocommerce', 'generator' ) );
537
		// first check that woo exists to prevent fatal errors.
538
		if ( function_exists( 'strip_is_woocommerce_activated' ) ) {
539
			// dequeue scripts and styles, unless we're in the store.
540
			if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
541
				wp_dequeue_style( 'woocommerce_frontend_styles' );
542
				wp_dequeue_style( 'woocommerce-general' );
543
				wp_dequeue_style( 'woocommerce-layout' );
544
				wp_dequeue_style( 'woocommerce-smallscreen' );
545
				wp_dequeue_style( 'woocommerce_fancybox_styles' );
546
				wp_dequeue_style( 'woocommerce_chosen_styles' );
547
				wp_dequeue_style( 'woocommerce_prettyPhoto_css' );
548
				wp_dequeue_style( 'select2' );
549
				wp_dequeue_style( 'strip-woocommerce' ); // the theme's CSS overwrite.
550
				wp_dequeue_script( 'wc-add-payment-method' );
551
				wp_dequeue_script( 'wc-lost-password' );
552
				wp_dequeue_script( 'wc_price_slider' );
553
				wp_dequeue_script( 'wc-single-product' );
554
				wp_dequeue_script( 'wc-add-to-cart' );
555
				wp_dequeue_script( 'wc-cart-fragments' );
556
				wp_dequeue_script( 'wc-credit-card-form' );
557
				wp_dequeue_script( 'wc-checkout' );
558
				wp_dequeue_script( 'wc-add-to-cart-variation' );
559
				wp_dequeue_script( 'wc-single-product' );
560
				wp_dequeue_script( 'wc-cart' );
561
				wp_dequeue_script( 'wc-chosen' );
562
				wp_dequeue_script( 'woocommerce' );
563
				wp_dequeue_script( 'jquery-cookie' );
564
				wp_dequeue_script( 'prettyPhoto' );
565
				wp_dequeue_script( 'prettyPhoto-init' );
566
				wp_dequeue_script( 'jquery-blockui' );
567
				wp_dequeue_script( 'jquery-placeholder' );
568
				wp_dequeue_script( 'jquery-payment' );
569
				wp_dequeue_script( 'fancybox' );
570
				wp_dequeue_script( 'jqueryui' );
571
			}
572
		}
573
	}
574
575
	add_action( 'pre_get_posts', 'strip_set_posts_per_page' );
576
	/**
577
	 * Set posts, WooCommerce products & comics number per archive page
578
	 * Fixes 404 error on pagination due to CTP conflicting with WordPress posts_per_page default
579
	 * see http://wordpress.stackexchange.com/questions/30757/change-posts-per-page-count/30763#30763
580
	 *
581
	 * @param WP_Query $query strip_set_posts_per_page.
582
	 * @return $query
583
	 */
584
	function strip_set_posts_per_page( $query ) {
585
		$query  = '';
0 ignored issues
show
Consider using a different name than the parameter $query. This often makes code more readable.
Loading history...
586
		if ( is_post_type_archive( 'product' ) ) {
587
			$query->set( 'posts_per_page', 4 );
0 ignored issues
show
The method set cannot be called on $query (of type string).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
588
		}
589
		return;
590
	}
591
592
593
	/**
594
	 * Show comics post types on home page (blog) and feeds.
595
	 *
596
	 * @param string $query strip_add_comics_to_blog.
597
	 */
598
	function strip_add_comics_to_blog( $query ) {
599
		if ( ! is_admin() || ! $query->is_main_query() || ! $query->is_home() ) {
0 ignored issues
show
The method is_main_query cannot be called on $query (of type string).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
The method is_home cannot be called on $query (of type string).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
600
			return; {
601
			$query->set( 'post_type', array( 'post', 'comic' ) );
602
			}
603
		}
604
	}
605
		add_action( 'pre_get_posts', 'strip_add_comics_to_blog' );
606
607
	/**
608
	 * Set an automatic default custom taxonomy for comic posts.
609
	 *
610
	 * When no "story" (taxonomy) is set, comic posts default to “draft”.
611
	 *
612
	 * @param	string $post_id set_default_object_terms.
613
	 * @param	string $post set_default_object_terms.
614
	 */
615
	function set_default_object_terms( $post_id, $post ) {
616
		if ( 'publish' === $post->post_status && 'comic' === $post->post_type ) {
617
			$defaults = array(
618
			'story' => array( 'draft' ),
619
			);
620
			$taxonomies = get_object_taxonomies( $post->post_type );
621
			foreach ( (array) $taxonomies as $taxonomy ) {
622
				$terms = get_the_terms( $post_id, $taxonomy );
623
				if ( empty( $terms ) && array_key_exists( $taxonomy, $defaults ) ) {
624
					wp_set_object_terms( $post_id, $defaults[ $taxonomy ], $taxonomy );
625
				}
626
			}
627
		}
628
	}
629
	add_action( 'save_post', 'set_default_object_terms', 0, 2 );
630
631
	/**
632
	 * Remove jquery migrate $scripts for enhanced performance.
633
	 *
634
	 * @param strings $scripts remove_jquery_migrate.
635
	 */
636
	function remove_jquery_migrate( $scripts ) {
637
		if ( is_admin() ) {
638
			return;
639
		}
640
		 $scripts->remove( 'jquery' );
641
		 $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.10.2' );
642
	}
643
		add_action( 'wp_default_scripts', 'remove_jquery_migrate' );
644
645
		/**
646
		 * Remove login errors notices (security)
647
		 */
648
	function no_wordpress_errors() {
649
		return 'Something is wrong!';
650
	}
651
		add_filter( 'login_errors', 'no_wordpress_errors' );
652