Completed
Push — master ( 1209b3...43f123 )
by SILENT
02:20
created

functions.php (1 issue)

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