Completed
Push — master ( c7bf14...1209b3 )
by SILENT
02:28
created

functions.php (10 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' ) ) :
0 ignored issues
show
Please always use braces to surround the code block of IF statements.
Loading history...
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.
0 ignored issues
show
The doc-type $strings could not be parsed: Unknown type name "$strings" at position 0. (view supported doc-types)

This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types.

Loading history...
77
		 */
78
		function filter_ptags_on_images( $content ) {
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...
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.
0 ignored issues
show
Should the type for parameter $size not be boolean|string?

This check looks for @param annotations where the type inferred by our type inference engine differs from the declared type.

It makes a suggestion as to what type it considers more descriptive.

Most often this is a case of a parameter that can be null in addition to its declared types.

Loading history...
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 = true ) {
282
	  global $post, $_wp_additional_image_sizes;
0 ignored issues
show
Comprehensibility Naming introduced by
The variable name $_wp_additional_image_sizes exceeds the maximum configured length of 20.

Very long variable names usually make code harder to read. It is therefore recommended not to make variable names too verbose.

Loading history...
283
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
	if ( $size && $_wp_additional_image_sizes[ $size ]['crop'] === 1 ) {
0 ignored issues
show
Found "=== 1". Use Yoda Condition checks, you must
Loading history...
291
		$size = '-' . $_wp_additional_image_sizes[ $size ]['width'] . 'x' . $_wp_additional_image_sizes[ $size ]['height'] . '.jpg';
0 ignored issues
show
Consider using a different name than the parameter $size. This often makes code more readable.
Loading history...
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
		if ( ( ! is_admin() ) && ( is_home() ) && ( is_search() ) ) {
570
			$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...
571
		}
572
		if ( ( ! is_admin() ) && ( is_post_type_archive( 'product' ) ) && ( taxonomy_exists( 'category' ) ) ) {
573
			$query->set( 'posts_per_page', 8 );
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...
574
		} elseif ( ( ! is_admin() ) && ( is_archive( 'story' ) ) ) {
575
			$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...
576
		}
577
		return $query;
578
	}
579
580
	/**
581
	 * Set an automatic default custom taxonomy for comic posts.
582
	 * When no "story" (taxonomy) is set, comic posts default to “draft”.
583
	 *
584
	 * @param	string $post_id set_default_object_terms.
585
	 * @param	string $post set_default_object_terms.
586
	 */
587
	function set_default_object_terms( $post_id, $post ) {
588
		if ( 'publish' === $post->post_status && 'comic' === $post->post_type ) {
589
			$defaults = array(
590
			'story' => array( 'draft' ),
591
			);
592
			$taxonomies = get_object_taxonomies( $post->post_type );
593
			foreach ( (array) $taxonomies as $taxonomy ) {
594
				$terms = get_the_terms( $post_id, $taxonomy );
595
				if ( empty( $terms ) && array_key_exists( $taxonomy, $defaults ) ) {
596
					wp_set_object_terms( $post_id, $defaults[ $taxonomy ], $taxonomy );
597
				}
598
			}
599
		}
600
	}
601
	add_action( 'save_post', 'set_default_object_terms', 0, 2 );
602
603
	/**
604
	 * Remove jquery migrate $scripts for enhanced performance.
605
	 *
606
	 * @param strings $scripts remove_jquery_migrate.
607
	 */
608
	function remove_jquery_migrate( $scripts ) {
609
		if ( is_admin() ) {
610
			return;
611
		}
612
		 $scripts->remove( 'jquery' );
613
		 $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.10.2' );
614
	}
615
		add_action( 'wp_default_scripts', 'remove_jquery_migrate' );
616