Passed
Push — master ( 28be89...88ce0f )
by SILENT
03:39
created

functions.php (5 issues)

Labels
Severity

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

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

Loading history...
The method is_search 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
			$query->set( 'post_type', array( 'post', 'page', 'comic', 'posts_per_page', 12 ) );
575
		}
576
		if ( ( ! is_admin() )  && ( $query === $wp_the_query ) && ( $query->is_post_type_archive( 'product' ) ) && ( $query->taxonomy_exists( 'category' ) ) ) {
0 ignored issues
show
The method is_post_type_archive cannot be called on $query (of type string).

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

Loading history...
The method taxonomy_exists 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...
577
			$query->set( 'posts_per_page', 4 );
578
		} elseif ( ( ! is_admin() )  && ( $query === $wp_the_query ) && ( $query->is_archive() ) && ( is_tax( 'story' ) ) ) {
0 ignored issues
show
The method is_archive 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...
579
			$query->set( 'posts_per_page', 3 );
580
		}
581
		return $query;
582
	}
583
584
	/**
585
	 * Set an automatic default custom taxonomy for comic posts.
586
	 * When no "story" (taxonomy) is set, comic posts default to “draft”.
587
	 *
588
	 * @param	string $post_id set_default_object_terms.
589
	 * @param	string $post set_default_object_terms.
590
	 */
591
	function set_default_object_terms( $post_id, $post ) {
592
		if ( 'publish' === $post->post_status && 'comic' === $post->post_type ) {
593
			$defaults = array(
594
			'story' => array( 'draft' ),
595
			);
596
			$taxonomies = get_object_taxonomies( $post->post_type );
597
			foreach ( (array) $taxonomies as $taxonomy ) {
598
				$terms = get_the_terms( $post_id, $taxonomy );
599
				if ( empty( $terms ) && array_key_exists( $taxonomy, $defaults ) ) {
600
					wp_set_object_terms( $post_id, $defaults[ $taxonomy ], $taxonomy );
601
				}
602
			}
603
		}
604
	}
605
	add_action( 'save_post', 'set_default_object_terms', 0, 2 );
606
607
	/**
608
	 * Remove jquery migrate $scripts for enhanced performance.
609
	 *
610
	 * @param strings $scripts remove_jquery_migrate.
611
	 */
612
	function remove_jquery_migrate( $scripts ) {
613
		if ( is_admin() ) {
614
			return;
615
		}
616
		 $scripts->remove( 'jquery' );
617
		 $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.10.2' );
618
	}
619
		add_action( 'wp_default_scripts', 'remove_jquery_migrate' );
620