Themes & Plugins in harmony
@grapplerulrich
Fatal error: Cannot redeclare enqueue_scripts() (previously declared)
// plugin.php
function enqueue_scripts() {}
// Theme functions.php
function enqueue_scripts() {}
2 functions 1 name
Unique Namespace
// Before prefixing
function enqueue_scripts() {}
// Prefixed function
function prefix_enqueue_scripts() {}
Prefixing
Beautiful Vienna
beautiful_vienna_
breathtaking_vancouver_
bv_
Creating the prefix
function vienna_enqueue_scripts() {}
Prefix functions
-
PHP function names
-
PHP class names
-
PHP global variables
-
PHP Constants
// PHP Class
class Vienna_Class() {
// Exception: Function within a class
public function init() {}
}
// PHP global
global $vienna_version;
// PHP Constants
define( 'VIENNA_SUPER_MODE', true );
function vienna_content_width() {
$content_width = apply_filters(
'vienna_content_width', // Filter name
640
);
}
function vienna_launch() {
do_action(
'vienna_launch', // Action name
$date,
$time
);
}
Hooks
add_image_size( 'vienna-full-width', 1000, 500 );
add_option( 'vienna_settings', '255' );
add_menu_page(
__( 'Custom Page Title', 'vienna' ),
__( 'Custom Menu Title', 'vienna' ),
'manage_options',
'vienna-settings', // unique page slug
'',
'dashicons-chart-pie',
6
);
wp_enqueue_style(
'style', // style handle
get_stylesheet_uri()
);
Enqueue
wp_enqueue_style(
'vienna-style',
get_stylesheet_uri()
);
Prefix the handle
wp_enqueue_script(
'jquery-fitvids',
get_template_directory_uri() . '/jquery.fitvids.js'
);
Don't Prefix Third Party Scripts
wp_enqueue_script( 'jquery-fitvids' );
wp_localize_script(
'jquery-fitvids',
'vienna_data', // Object name
array(
'title' => __( 'WCEU is great!', 'vienna' ),
)
);
Localize Script
// alerts 'WCEU is great!'
alert( vienna_data.title );
-
PHP FUNCTION NAMES
-
PHP CLASS NAMES
-
PHP GLOBAL VARIABLES
-
PHP CONSTANTS
-
Hooks
-
add_image_size
-
add_option
-
add_menu_page
-
wp_enqueue_style
-
wp_localize_script
How many functions & hooks are there in WordPress Core?
~800 | ~1 100 | ~7 000 | ~15 000 |
---|
How many functions & hooks are there in WordPress Core?
~800 | ~1 100 | ~7 000 | ~15 000 |
---|
USE Core Features
<script src="<?php echo get_template_directory_uri(); ?>/fitvids.js">
</script>
Loading Scripts
wp_enqueue_script(
'jquery-fitvids',
get_template_directory_uri() . '/jquery.fitvids.js'
);
Enqueue Scritps
wp_enqueue_script( 'jquery' );
wp_enqueue_script(
'jquery-fitvids',
get_template_directory_uri() . '/jquery.fitvids.js'
);
Dependency
wp_enqueue_script(
'jquery-fitvids',
get_template_directory_uri() . '/jquery.fitvids.js',
array( 'jquery' ) // Dependencies
);
Define DEPENDENCIES
Use core scripts
function vienna_enqueue_styles() {
if ( is_archive() ) {
wp_enqueue_style(
'vienna-style',
get_stylesheet_uri()
);
}
}
add_action(
'wp_enqueue_scripts',
'vienna_enqueue_styles'
);
Front End
function vienna_admin_scripts( $hook_suffix ) {
// Only load on edit.php
if ( 'edit.php' !== $hook_suffix ) {
return;
}
wp_enqueue_script(
'vienna-admin',
get_template_directory_uri() . '/admin.js',
);
}
add_action(
'admin_enqueue_scripts',
'vienna_admin_scripts'
);
Admin area
function vienna_enqueue_customizer_scripts() {
wp_enqueue_script(
'vienna-customizer',
get_template_directory_uri() . '/customizer.js'
);
}
add_action(
'customize_preview_init',
'vienna_enqueue_customizer_scripts'
);
Customizer
// Load the html5 shiv.
wp_enqueue_script(
'vienna-html5',
get_template_directory_uri() . '/js/html5.js',
);
wp_script_add_data(
'vienna-html5',
'conditional',
'lt IE 9'
);
CONDITIONAL Loading
wp_enqueue_script( 'jquery-fitvids' );
wp_add_inline_script(
'jquery-fitvids',
'jQuery(document).ready(function(){
// Target your .container
$("#thing-with-videos").fitVids();
});'
);
Code snippets
-
Unique Namespace
-
Use core features
Harmonize plugins and themes
Themes & Plugins in harmony
By Ulrich Pogson
Themes & Plugins in harmony
- 10,934