Completed
Push — master ( ab7a11...55b868 )
by SILENT
03:15
created

functions.php (5 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
		/**
41
* Add default posts and comments RSS feed links to head
42
*/
43
		add_theme_support( 'automatic-feed-links' );
44
45
		/**
46
* Enable support for title-tag. Allows themes to add document title tag to HTML <head> (since version 4.1.).
47
*/
48
		add_theme_support( 'title-tag' );
49
50
		/**
51
* Enable support for custom logo.
52
*
53
* @since strip 1.0
54
*/
55
		add_theme_support( 'custom-logo', array(
56
			'height'      => 156,
57
			'width'       => 312,
58
			'flex-height' => true,
59
			'flex-width'  => true,
60
			)
61
		);
62
63
		/**
64
* Enable support for Post Thumbnails on posts and pages
65
*
66
* @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
67
*/
68
		add_theme_support( 'post-thumbnails' );
69
		add_image_size( 'stri-featured-image', 1920, 960, true );
70
		add_image_size( 'strip-medium', 624, 312, true ); // cropped.
71
		add_image_size( 'strip-thumbnail', 312, 156, true ); // cropped.
72
73
		/**
74
		 * See https://css-tricks.com/snippets/wordpress/remove-paragraph-tags-from-around-images/
75
		 * http://codex.wordpress.org/Function_Reference/wpautop gets the same result but also removes line blocks: remove_filter( 'the_content', 'wpautop' );
76
		 *
77
		 * @param $strings $content filter_ptags_on_images.
78
		 */
79
		function filter_ptags_on_images( $content ) {
80
			return preg_replace( '/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content );
81
		}
82
		add_filter( 'the_content', 'filter_ptags_on_images' );
83
84
		/**
85
	 	* This theme uses wp_nav_menu() in one location.
86
	 	*/
87
		register_nav_menus(array(
88
			'primary' => __( 'Primary Menu', 'strip' ),
89
		));
90
91
		/*
92
		* Switch default core markup for search form, comment form, and comments
93
		* to output valid HTML5.
94
		*/
95
		add_theme_support( 'html5', array(
96
			'search-form',
97
			'comment-form',
98
			'comment-list',
99
			'gallery',
100
			'caption',
101
		) );
102
103
		/**
104
	 * Enable support for Post Formats
105
	 */
106
		add_theme_support( 'post-formats', array(
107
			'aside',
108
			'image',
109
			'video',
110
			'quote',
111
			'link',
112
			'gallery',
113
			'status',
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
	// toggle comments js.
237
	wp_enqueue_script( 'strip-toggle-comments', get_template_directory_uri() . '/assets/js/min/toggle-comments-min.js', array( 'jquery' ), '1.2', true );
238
239
	if ( is_single() && comments_open() && get_option( 'thread_comments' ) ) {
240
		wp_enqueue_script( 'comment-reply' );
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
	global $posts;
281
282
	if ( function_exists( 'register_new_royalslider_files' ) ) {
283
			register_new_royalslider_files( 1 ); // place register_new_royalslider_files function here.
284
	}
285
}
286
287
/**
288
 * Get the first image in a post. Strip Version. Retrieve the first image from each post and resize.
289
 *
290
 * @param string $size get the first image size.
291
 * @link https://css-tricks.com/snippets/wordpress/get-the-first-image-from-a-post/
292
 * see https://gist.github.com/SilentComics/0a7ea47942eb759dbb48eac2b7be1bbc
293
 */
294
function get_first_image( $size = 'thumbnail' ) {
0 ignored issues
show
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
295
	global $post, $slider;
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
	if ( '[' !== $slider[0] ) {
305
			return $first_img;
306
		foreach ( $first_img as $first_img => $size ) {
307
			return $size( 'strip-medium' );
308
		} // because RoyalSLider resizes images on its own we let it do so.
309
	}
310
311
	// Now we have the $first_img but we want the thumbnail of that image.
312
	 $explode = explode( '.', $first_img );
313
	 $count = count( $explode );
314
	 $size = '-624x312'; // Our panel ratio (2:1) 312x156 for lighther page, 624x312 for retina; use add_image_size() and Force Regenerate Thumbnails plugin when changing sizes.
0 ignored issues
show
Consider using a different name than the parameter $size. This often makes code more readable.
Loading history...
315
	 $explode[ $count -2 ] = $explode[ $count -2 ] . '' . $size;
316
	 $thumb_img = implode( '.', $explode );
317
	 return $thumb_img;
318
}
319
320
	add_filter( 'get_first_image', 'thumbnail' );
321
/**
322
 * Register Custom Post Type for comics
323
 */
324
function comic_post_type() {
325
326
	$labels = array(
327
		'name'                       => _x( 'Comics', 'Post Type General Name', 'strip' ),
328
		'singular_name'              => _x( 'Comic', 'Post Type Singular Name', 'strip' ),
329
		'menu_name'                  => _x( 'Comics', 'admin menu', 'strip' ),
330
		'name_admin_bar'             => _x( 'Comic', 'add new on admin bar', 'strip' ),
331
		'parent_item_colon'	         => __( 'Parent Comic:', 'strip' ),
332
		'all_items'                  => __( 'All Comics', 'strip' ),
333
		'add_new_item'               => __( 'Add New Comic', 'strip' ),
334
		'add_new'                    => __( 'Add New Comic', 'strip' ),
335
		'new_item'                   => __( 'New Comic', 'strip' ),
336
		'edit_item'                  => __( 'Edit Comic', 'strip' ),
337
		'update_item'                => __( 'Update Comic', 'strip' ),
338
		'view_item'                  => __( 'View Comic', 'strip' ),
339
		'search_items'               => __( 'Search Item', 'strip' ),
340
		'not_found'                  => __( 'No Comics found', 'strip' ),
341
		'not_found_in_trash'         => __( 'No Comics found in Trash', 'strip' ),
342
		'items_list'                 => __( 'Comics list', 'strip' ),
343
		'items_list_navigation'      => __( 'Comics list navigation', 'strip' ),
344
		'filter_items_list'          => __( 'Filter Comics list', 'strip' ),
345
	);
346
347
	$supports = array(
348
	'title',
349
	'editor',
350
	'excerpt',
351
	'trackbacks',
352
	'custom-fields',
353
	'comments',
354
	'revisions',
355
	'thumbnail',
356
	'author',
357
	'archive',
358
	);
359
360
	$args = array(
361
		'label'                      => __( 'Comic', 'strip' ),
362
		'description'                => __( 'Publish Comics and Webcomics', 'strip' ),
363
		'labels'                     => $labels,
364
		'supports'                   => $supports,
365
		'taxonomies'                 => array( 'story', 'story_term', 'draft' ),
366
		'hierarchical'               => true,
367
		'public'                     => true,
368
		'show_ui'                    => true,
369
		'show_in_menu'               => true,
370
		'menu_position'              => 20,
371
		'menu_icon'                  => 'dashicons-book-alt',
372
		'show_in_admin_bar'	         => true,
373
		'show_in_nav_menus'	         => true,
374
		'can_export'                 => true,
375
		'has_archive'                => true,
376
		'feeds'                      => true,
377
		'exclude_from_search'        => false,
378
		'rewrite'                    => array( 'slug' => 'stories', 'with_front' => true ),
379
		'publicly_queryable'	       => true,
380
		'capability_type'            => 'post',
381
	);
382
	register_post_type( 'comic', $args );
383
}
384
385
// Hook into the 'init' action.
386
add_action( 'init', 'comic_post_type', 0 ); // End of register_cpt_comic().
387
388
	/**
389
	 * Register Custom Taxonomy 'story'
390
	 */
391
function comic_story_taxonomy() {
392
	$labels = array(
393
		'name'                       => _x( 'Comic Story', 'Taxonomy General Name', 'strip' ),
394
		'singular_name'              => _x( 'Comic Story', 'Taxonomy Singular Name', 'strip' ),
395
		'menu_name'                  => __( 'Comic Stories', 'strip' ),
396
		'all_items'                  => __( 'All Comic Stories', 'strip' ),
397
		'parent_item'                => __( 'Parent Story', 'strip' ),
398
		'parent_item_colon'          => __( 'Parent Story:', 'strip' ),
399
		'new_item_name'              => __( 'New Comic Story', 'strip' ),
400
		'add_new_item'               => __( 'Add New Story', 'strip' ),
401
		'edit_item'                  => __( 'Edit Story', 'strip' ),
402
		'update_item'                => __( 'Update Story', 'strip' ),
403
		'view_item'                  => __( 'View Item', 'strip' ),
404
		'separate_items_with_commas' => __( 'Separate stories with commas', 'strip' ),
405
		'add_or_remove_items'        => __( 'Add or Remove Stories', 'strip' ),
406
		'choose_from_most_used'      => __( 'Choose from the most used stories', 'strip' ),
407
		'popular_items'              => __( 'Popular comic stories', 'strip' ),
408
		'search_items'               => __( 'Search Stories', 'strip' ),
409
		'not_found'                  => __( 'No comic Stories found', 'strip' ),
410
		'items_list'                 => __( 'Comic Stories list', 'strip' ),
411
		'items_list_navigation'      => __( 'Comic Stories list navigation', 'strip' ),
412
	);
413
	$args = array(
414
		'labels'                     => $labels,
415
		'label'                      => 'Stories',
416
		'hierarchical'               => true,
417
		'public'                     => true,
418
		'show_ui'                    => true,
419
		'show_admin_column'          => true,
420
		'show_in_nav_menus'          => true,
421
		'show_tagcloud'              => true,
422
		'query_var'	                 => true,
423
		'rewrite'                    => array( 'slug' => 'story' ),
424
	);
425
	register_taxonomy( 'story', array( 'comic' ), $args );
426
	register_taxonomy_for_object_type( 'story', 'comic' );
427
}
428
429
// Hook into the 'init' action.
430
add_action( 'init', 'comic_story_taxonomy', 0 );
431
432
/**
433
 * Function strip rewrite rules.
434
 */
435
function strip_rewrite_rules() {
436
	flush_rewrite_rules();
437
}
438
/* Flush rewrite rules for custom post types. */
439
add_action( 'after_switch_theme', 'strip_rewrite_rules' );
440
441
// Add Print taxonomy, NOT hierarchical (like tags)
442
// Register Custom Taxonomy.
443
	$labels = array(
444
		'name'                       => _x( 'Prints', 'Taxonomy General Name', 'strip' ),
445
		'singular_name'              => _x( 'Print', 'Taxonomy Singular Name', 'strip' ),
446
		'menu_name'                  => __( 'Print', 'strip' ),
447
		'all_items'                  => __( 'All Prints', 'strip' ),
448
		'parent_item'                => __( 'Parent Print', 'strip' ),
449
		'parent_item_colon'          => __( 'Parent Print:', 'strip' ),
450
		'new_item_name'              => __( 'New Print Name', 'strip' ),
451
		'add_new_item'               => __( 'Add New Print', 'strip' ),
452
		'edit_item'                  => __( 'Edit Print', 'strip' ),
453
		'update_item'                => __( 'Update Pring', 'strip' ),
454
		'view_item'                  => __( 'View Print', 'strip' ),
455
		'separate_items_with_commas' => __( 'Separate prints with commas', 'strip' ),
456
		'add_or_remove_items'        => __( 'Add or remove prints', 'strip' ),
457
		'choose_from_most_used'      => __( 'Choose from the most used', 'strip' ),
458
		'popular_items'              => __( 'Popular Prints', 'strip' ),
459
		'search_items'               => __( 'Search Prints', 'strip' ),
460
		'not_found'                  => __( 'Not Found', 'strip' ),
461
		'no_terms'                   => __( 'No prints', 'strip' ),
462
		'items_list'                 => __( 'Prints list', 'strip' ),
463
		'items_list_navigation'      => __( 'Prints list navigation', 'strip' ),
464
	);
465
466
	$args = array(
467
		'labels'                     => $labels,
468
		'hierarchical'               => false,
469
		'public'                     => true,
470
		'show_ui'                    => true,
471
		'show_admin_column'          => true,
472
		'show_in_nav_menus'          => true,
473
		'show_tagcloud'              => true,
474
	);
475
	register_taxonomy( 'print', array( 'comic' ), $args );
476
477
	/*
478
	* WooCommerce Hooks
479
	* Layout
480
	*/
481
	remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
482
	remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
483
	remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );
484
	remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 10 );
485
	remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
486
	remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
487
488
	add_action( 'woocommerce_before_main_content', 'strip_wrapper_start', 10 );
489
	add_action( 'woocommerce_after_main_content', 'strip_wrapper_end', 10 );
490
491
		 /**
492
		  * WooCommerce wrapper
493
		  */
494
	function strip_wrapper_start() {
495
		echo '<section id="content" class="woocommerce-content" role="main"><div class="entry-wrap wrap clear">';
496
	}
497
498
	/**
499
	 * End WooCommerce wrapper
500
	 */
501
	function strip_wrapper_end() {
502
		echo '</section>';
503
	}
504
505
	add_action( 'after_setup_theme', 'woocommerce_support' );
506
	/**
507
	 * Add WooCommerce support
508
	 * https://docs.woothemes.com/document/third-party-custom-theme-compatibility/*
509
	 */
510
	function woocommerce_support() {
511
		add_theme_support( 'woocommerce' );
512
	}
513
514
	/**
515
	 * Enqueue the theme's own style for WooCommerce.
516
	 */
517
	function wp_enqueue_woocommerce_style() {
518
519
			wp_register_style( 'strip-woocommerce', get_template_directory_uri() . '/assets/css/woocommerce-min.css' );
520
		if ( class_exists( 'woocommerce' ) ) {
521
			wp_enqueue_style( 'strip-woocommerce' );
522
		}
523
	}
524
525
	add_action( 'wp_enqueue_scripts', 'wp_enqueue_woocommerce_style' );
526
527
	/**
528
* Optimize WooCommerce Scripts
529
* Remove WooCommerce Generator tag, styles, and scripts from non WooCommerce pages.
530
*
531
* @link http://gregrickaby.com/remove-woocommerce-styles-and-scripts/
532
* @link https://wordimpress.com/how-to-load-woocommerce-scripts-and-styles-only-in-shop/
533
* @link https://gist.github.com/DevinWalker/7621777
534
* @link http://dessky.com/blog/disable-woocommerce-scripts-and-styles/
535
*/
536
	add_action( 'wp_enqueue_scripts', 'strip_manage_woocommerce_styles', 99 );
537
538
	/**
539
	 * Remove some WooCommerce queries.
540
	 */
541
	function strip_manage_woocommerce_styles() {
542
		// remove generator meta tag.
543
		remove_action( 'wp_head', array( 'woocommerce', 'generator' ) ); // this line when used with $GLOBALS['woocommerce'] prompts an error when Woo is deactivated though.
544
		// first check that woo exists to prevent fatal errors.
545
		if ( function_exists( 'strip_is_woocommerce_activated' ) ) {
546
			// dequeue scripts and styles, unless we're in the store.
547
			if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
548
				wp_dequeue_style( 'woocommerce_frontend_styles' );
549
				wp_dequeue_style( 'woocommerce-general' );
550
				wp_dequeue_style( 'woocommerce-layout' );
551
				wp_dequeue_style( 'woocommerce-smallscreen' );
552
				wp_dequeue_style( 'woocommerce_fancybox_styles' );
553
				wp_dequeue_style( 'woocommerce_chosen_styles' );
554
				wp_dequeue_style( 'woocommerce_prettyPhoto_css' );
555
				wp_dequeue_style( 'select2' );
556
				wp_dequeue_style( 'strip-woocommerce' ); // the theme's CSS overwrite.
557
				wp_dequeue_script( 'wc-add-payment-method' );
558
				wp_dequeue_script( 'wc-lost-password' );
559
				wp_dequeue_script( 'wc_price_slider' );
560
				wp_dequeue_script( 'wc-single-product' );
561
				wp_dequeue_script( 'wc-add-to-cart' );
562
				wp_dequeue_script( 'wc-cart-fragments' );
563
				wp_dequeue_script( 'wc-credit-card-form' );
564
				wp_dequeue_script( 'wc-checkout' );
565
				wp_dequeue_script( 'wc-add-to-cart-variation' );
566
				wp_dequeue_script( 'wc-single-product' );
567
				wp_dequeue_script( 'wc-cart' );
568
				wp_dequeue_script( 'wc-chosen' );
569
				wp_dequeue_script( 'woocommerce' );
570
				wp_dequeue_script( 'jquery-cookie' );
571
				wp_dequeue_script( 'prettyPhoto' );
572
				wp_dequeue_script( 'prettyPhoto-init' );
573
				wp_dequeue_script( 'jquery-blockui' );
574
				wp_dequeue_script( 'jquery-placeholder' );
575
				wp_dequeue_script( 'jquery-payment' );
576
				wp_dequeue_script( 'fancybox' );
577
				wp_dequeue_script( 'jqueryui' );
578
			}
579
		}
580
	}
581
582
	add_action( 'pre_get_posts', 'strip_set_posts_per_page' );
583
	/**
584
	 * Set posts, WooCommerce products & comics number per archive page
585
	 * Fixes 404 error on pagination due to CTP conflicting with WordPress posts_per_page default
586
	 * see http://wordpress.stackexchange.com/questions/30757/change-posts-per-page-count/30763#30763
587
	 *
588
	 * @param string $query strip_set_posts_per_page.
589
	 */
590
	function strip_set_posts_per_page( $query ) {
591
		  global $wp_the_query;
592
		if ( ( ! is_admin() )  && ( $query === $wp_the_query ) && ( is_home() ) && ( is_search() ) ) {
593
			$query->set( 'post_type', array( 'post', 'page', 'comic', 'posts_per_page', 12 ) );
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...
594
		}
595
		if ( ( ! is_admin() )  && ( $query === $wp_the_query ) && ( is_post_type_archive( 'product' ) ) && ( taxonomy_exists( 'category' ) ) ) {
596
			$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...
597
		} elseif ( ( ! is_admin() )  && ( $query === $wp_the_query ) && ( is_archive() ) && ( is_tax( 'story' ) ) ) {
598
			$query->set( 'posts_per_page', 3 );
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...
599
		}
600
		return $query;
601
	}
602
603
	add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
604
	/**
605
	 * Show 'comics' post types on home page.
606
	 *
607
	 * @param string $query add_my_post_types_to_query.
608
	 */
609
	function add_my_post_types_to_query( $query ) {
610
		if ( is_home() && $query->is_main_query() ) {
611
			$query->set( 'post_type', array( 'post', 'page', 'comic' ) );
612
613
		}
614
		  return $query;
615
	}
616
617
	/**
618
	 * Set an automatic default custom taxonomy for comic posts.
619
	 * When no "story" (taxonomy) is set, comic posts default to “draft”.
620
	 *
621
	 * @param	string $post_id set_default_object_terms.
622
	 * @param	string $post set_default_object_terms.
623
	 */
624
	function set_default_object_terms( $post_id, $post ) {
625
		if ( 'publish' === $post->post_status && 'comic' === $post->post_type ) {
626
			$defaults = array(
627
			'story' => array( 'draft' ),
628
			);
629
			$taxonomies = get_object_taxonomies( $post->post_type );
630
			foreach ( (array) $taxonomies as $taxonomy ) {
631
				$terms = get_the_terms( $post_id, $taxonomy );
632
				if ( empty( $terms ) && array_key_exists( $taxonomy, $defaults ) ) {
633
					wp_set_object_terms( $post_id, $defaults[ $taxonomy ], $taxonomy );
634
				}
635
			}
636
		}
637
	}
638
	add_action( 'save_post', 'set_default_object_terms', 0, 2 );
639
640
	/**
641
	 * Remove jquery migrate $scripts for enhanced performance.
642
	 *
643
	 * @param strings $scripts remove_jquery_migrate.
644
	 */
645
	function remove_jquery_migrate( $scripts ) {
646
		if ( is_admin() ) {
647
			return;
648
		}
649
		 $scripts->remove( 'jquery' );
650
		 $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.10.2' );
651
	}
652
		add_action( 'wp_default_scripts', 'remove_jquery_migrate' );
653
654
		/**
655
		 * Remove login errors notices (security)
656
		 */
657
	function no_wordpress_errors() {
658
		return 'Something is wrong!';
659
	}
660
		add_filter( 'login_errors', 'no_wordpress_errors' );
661