Completed
Push — master ( be3ddb...6dfb16 )
by SILENT
11:30 queued 05:32
created

functions.php (2 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
		set_post_thumbnail_size( 1920, 0 ); // was using add_image_size.
70
		add_image_size( 'story-thumb', 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 images fine but doesn't 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/tommaitland/8001524
280
 */
281
function get_first_image( $size = false ) {
282
	  global $post, $_wp_additional_image_sizes;
283
284
	  $output = preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', do_shortcode( $post->post_content, 'gallery' ), $matches );
0 ignored issues
show
$output is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
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
	if ( $size && $_wp_additional_image_sizes[ $size ]['crop'] === 0 ) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $size of type false|string is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== false instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

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