Passed
Push — master ( 43f123...0d9879 )
by SILENT
02:21
created

functions.php (1 issue)

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
		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.
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 ) );
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...
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