This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Create additional scripts options for the Genesis Framework. | |
* | |
* Genesis provides site wide script options out of the box. It also provides | |
* the ability to set script options on a per page/post basis. | |
* | |
* It does not provide the ability to control before/after script options | |
* globally for posts and/or pages, which is what we provide below. | |
*/ | |
/** | |
* Defaults | |
* | |
* @since 1.0.0 | |
* @param array $defaults | |
* @return array | |
*/ | |
function ja_genesis_additional_scripts_defaults( $defaults ) { | |
$defaults['page_before'] = ''; | |
$defaults['page_after'] = ''; | |
$defaults['post_before'] = ''; | |
$defaults['page_after'] = ''; | |
return $defaults; | |
} | |
add_filter( 'genesis_theme_settings_defaults', 'ja_genesis_additional_scripts_defaults' ); | |
/** | |
* Sanitization options | |
* | |
* @since 1.0.0 | |
*/ | |
function ja_genesis_additional_scripts_sanitization() { | |
genesis_add_option_filter( 'requires_unfiltered_html', GENESIS_SETTINGS_FIELD, | |
array( | |
'page_before', | |
'page_after', | |
'post_before', | |
'post_after', | |
) ); | |
} | |
add_action( 'genesis_settings_sanitizer_init', 'ja_genesis_additional_scripts_sanitization' ); | |
/** | |
* Register Metabox | |
* | |
* @since 1.0.0 | |
* @param string $_genesis_theme_settings_pagehook | |
*/ | |
function ja_genesis_additional_scripts_metabox_register( $_genesis_theme_settings_pagehook ) { | |
add_meta_box('ja-genesis-additional-scripts', 'Additional Scripts', 'ja_genesis_additional_scripts_metabox_render', $_genesis_theme_settings_pagehook, 'main', 'low'); | |
} | |
add_action('genesis_theme_settings_metaboxes', 'ja_genesis_additional_scripts_metabox_register'); | |
/** | |
* Render Metabox | |
* | |
* @since 1.0.0 | |
*/ | |
function ja_genesis_additional_scripts_metabox_render() { | |
?> | |
<div style="background-color:#eee;margin:-11px -10px 10px -10px;padding:8px 10px;font-weight:700;font-size:16px;">PAGES</div> | |
<p><label for="<?php echo GENESIS_SETTINGS_FIELD; ?>[page_before]">Enter scripts or code you would like output to <code>wp_head()</code> on pages:</label></p> | |
<textarea name="<?php echo GENESIS_SETTINGS_FIELD; ?>[page_before]" class="large-text" id="<?php echo GENESIS_SETTINGS_FIELD; ?>[page_before]" cols="78" rows="8"><?php echo esc_textarea( genesis_get_option( 'page_before' ) ); ?></textarea> | |
<hr class="div"> | |
<p><label for="<?php echo GENESIS_SETTINGS_FIELD; ?>[page_after]">Enter scripts or code you would like output to <code>wp_footer()</code> on pages:</label></p> | |
<textarea name="<?php echo GENESIS_SETTINGS_FIELD; ?>[page_after]" class="large-text" id="<?php echo GENESIS_SETTINGS_FIELD; ?>[page_after]" cols="78" rows="8"><?php echo esc_textarea( genesis_get_option( 'page_after' ) ); ?></textarea> | |
<div style="background-color:#eee;margin: 10px -10px 10px -10px;padding:8px 10px;font-weight:700;font-size:16px;">POSTS</div> | |
<p><label for="<?php echo GENESIS_SETTINGS_FIELD; ?>[post_before]">Enter scripts or code you would like output to <code>wp_head()</code> on posts:</label></p> | |
<textarea name="<?php echo GENESIS_SETTINGS_FIELD; ?>[post_before]" class="large-text" id="<?php echo GENESIS_SETTINGS_FIELD; ?>[post_before]" cols="78" rows="8"><?php echo esc_textarea( genesis_get_option( 'post_before' ) ); ?></textarea> | |
<hr class="div"> | |
<p><label for="<?php echo GENESIS_SETTINGS_FIELD; ?>[post_after]">Enter scripts or code you would like output to <code>wp_footer()</code> on posts:</label></p> | |
<textarea name="<?php echo GENESIS_SETTINGS_FIELD; ?>[post_after]" class="large-text" id="<?php echo GENESIS_SETTINGS_FIELD; ?>[post_after]" cols="78" rows="8"><?php echo esc_textarea( genesis_get_option( 'post_after' ) ); ?></textarea> | |
<?php | |
} | |
/** | |
* Add after scripts | |
* | |
* @since 1.0.0 | |
*/ | |
function ja_genesis_additional_scripts_after() { | |
if ( is_page() ) { | |
echo genesis_get_option( 'page_after' ); | |
} | |
if ( is_singular( 'post' ) ) { | |
echo genesis_get_option( 'post_after' ); | |
} | |
} | |
add_action('wp_footer', 'ja_genesis_additional_scripts_after', 30 ); | |
/** | |
* Add before scripts | |
* | |
* @since 1.0.0 | |
*/ | |
function ja_genesis_additional_scripts_before() { | |
if ( is_page() ) { | |
echo genesis_get_option( 'page_before' ); | |
} | |
if ( is_singular( 'post' ) ) { | |
echo genesis_get_option( 'post_before' ); | |
} | |
} | |
add_action( 'wp_head', 'ja_genesis_additional_scripts_before', 30 ); |
Questions, comments, or suggestion for improvement? Leave a comment on the GitHub Gist page.