2013-08-26 20:05:25 -04:00
< ? php
/*
Plugin Name: Genesis Simple Sidebars
Plugin URI: http://www.studiopress.com/plugins/simple-sidebars
Description: Genesis Simple Sidebars allows you to easily create and use new sidebar widget areas.
Author: Nathan Rice
Author URI: http://www.nathanrice.net/
2015-09-29 17:18:50 -04:00
Text Domain: genesis-simple-sidebars
2015-10-12 16:04:42 -04:00
Domain Path: /languages
2013-08-26 20:05:25 -04:00
2016-06-17 17:04:30 -04:00
Version: 2.0.4
2013-08-26 20:05:25 -04:00
License: GNU General Public License v2.0 (or later)
License URI: http://www.opensource.org/licenses/gpl-license.php
*/
/** Define our constants */
define ( 'SS_SETTINGS_FIELD' , 'ss-settings' );
define ( 'SS_PLUGIN_DIR' , dirname ( __FILE__ ) );
register_activation_hook ( __FILE__ , 'ss_activation_check' );
/**
* Activation hook callback.
*
* This functions runs when the plugin is activated. It checks to make sure the user is running
* a minimum Genesis version, so there are no conflicts or fatal errors.
*
* @since 0.9.0
*/
function ss_activation_check () {
2016-06-17 17:04:30 -04:00
if ( ! defined ( 'PARENT_THEME_VERSION' ) || ! version_compare ( PARENT_THEME_VERSION , '2.3.0' , '>=' ) )
ss_deactivate ( '2.3.0' , '4.4.2' );
2013-08-26 20:05:25 -04:00
}
/**
* Deactivate Simple Sidebars.
*
* This function deactivates Simple Sidebars.
*
* @since 1.0.0
*/
2016-06-17 17:04:30 -04:00
function ss_deactivate ( $genesis_version = '2.3.0' , $wp_version = '4.4.2' ) {
2013-08-26 20:05:25 -04:00
deactivate_plugins ( plugin_basename ( __FILE__ ) );
2015-09-29 17:18:50 -04:00
wp_die ( sprintf ( __ ( 'Sorry, you cannot run Simple Sidebars without WordPress %s and <a href="%s">Genesis %s</a>, or greater.' , 'genesis-simple-sidebars' ), $wp_version , 'http://my.studiopress.com/?download_id=91046d629e74d525b3f2978e404e7ffa' , $genesis_version ) );
2013-08-26 20:05:25 -04:00
}
add_action ( 'genesis_init' , 'ss_genesis_init' , 12 );
/**
* Plugin initialization.
*
* Initialize the plugin, set the constants, hook callbacks to actions, and include the plugin library.
*
* @since 0.9.0
*/
function ss_genesis_init () {
//* Deactivate if not running Genesis 1.8.0 or greater
if ( ! class_exists ( 'Genesis_Admin_Boxes' ) )
add_action ( 'admin_init' , 'ss_deactivate' , 10 , 0 );
//* Load translations
2015-09-29 17:18:50 -04:00
load_plugin_textdomain ( 'genesis-simple-sidebars' , false , 'genesis-simple-sidebars/languages' );
2013-08-26 20:05:25 -04:00
//* required hooks
add_action ( 'get_header' , 'ss_sidebars_init' );
add_action ( 'widgets_init' , 'ss_register_sidebars' );
//* The rest is admin stuff, so load only if we're in the admin area
if ( ! is_admin () )
return ;
//* Include admin files
require_once ( SS_PLUGIN_DIR . '/includes/admin.php' );
require_once ( SS_PLUGIN_DIR . '/includes/inpost.php' );
require_once ( SS_PLUGIN_DIR . '/includes/term.php' );
//* let the child theme hook the genesis_simple_sidebars_taxonomies filter before hooking term edit
add_action ( 'init' , 'ss_term_edit_init' );
}
/**
* Register widget areas.
*
* This function registers the created sidebars as widget areas
*
* @since 0.9.0
*/
function ss_register_sidebars () {
$_sidebars = stripslashes_deep ( get_option ( SS_SETTINGS_FIELD ) );
//* If no sidebars have been created, do nothing
if ( ! $_sidebars )
return ;
//* Cycle through created sidebars, register them as widget areas
foreach ( ( array ) $_sidebars as $id => $info ) {
2016-04-21 11:32:39 -04:00
if ( ! isset ( $info [ 'name' ] ) || ! isset ( $info [ 'description' ] ) ) {
continue ;
}
2013-08-26 20:05:25 -04:00
genesis_register_sidebar ( array (
'name' => esc_html ( $info [ 'name' ] ),
'id' => $id ,
'description' => esc_html ( $info [ 'description' ] ),
'editable' => 1 ,
) );
}
}
/**
* Use custom sidebars.
*
* Remove the default sidebars, run some conditional logic,
* use alternate sidebars if necessary, else fallback on default sidebars.
*
* @since 0.9.0
*/
function ss_sidebars_init () {
remove_action ( 'genesis_sidebar' , 'genesis_do_sidebar' );
remove_action ( 'genesis_sidebar_alt' , 'genesis_do_sidebar_alt' );
add_action ( 'genesis_sidebar' , 'ss_do_sidebar' );
add_action ( 'genesis_sidebar_alt' , 'ss_do_sidebar_alt' );
}
/**
* Display primary sidebar.
*
* Display custom sidebar if one exists, else display default primary sidebar.
*
* @since 0.9.0
*/
function ss_do_sidebar () {
if ( ! ss_do_one_sidebar ( '_ss_sidebar' ) )
genesis_do_sidebar ();
}
/**
* Display secondary sidebar.
*
* Display custom sidebar if one exists, else display default secondary sidebar.
*
* @since 0.9.0
*/
function ss_do_sidebar_alt () {
if ( ! ss_do_one_sidebar ( '_ss_sidebar_alt' ) )
genesis_do_sidebar_alt ();
}
/**
* Sidebar widget area output.
*
* Helper function to show widgets in a particular sidebar.
*
* @param string $sidebar_key sidebar id you wish to output.
*
* @since 0.9.0
*
*/
function ss_do_one_sidebar ( $sidebar_key = '_ss_sidebar' ) {
if ( is_singular () && $sidebar_key = genesis_get_custom_field ( $sidebar_key ) ) {
2016-02-24 14:48:19 -05:00
if ( dynamic_sidebar ( $sidebar_key ) ) {
return true ;
}
2013-08-26 20:05:25 -04:00
}
2016-02-24 14:48:19 -05:00
if ( is_tax () || is_category () || is_tag () ) {
2013-08-26 20:05:25 -04:00
2016-02-24 14:48:19 -05:00
if ( $sidebar_key = get_term_meta ( get_queried_object () -> term_id , $sidebar_key , true ) ) {
dynamic_sidebar ( $sidebar_key );
return true ;
2013-08-26 20:05:25 -04:00
}
2016-02-24 14:48:19 -05:00
2013-08-26 20:05:25 -04:00
}
return false ;
}
/**
* Return taxonomy ids.
*
* Helper function to return the array keys from a taxonomy query.
*
* @since 0.9.0
*/
function ss_get_taxonomies () {
$taxonomies = get_taxonomies ( array ( 'show_ui' => true , 'public' => true ) );
return apply_filters ( 'genesis_simple_sidebars_taxonomies' , array_keys ( $taxonomies ) );
}
/**
* Does this Genesis install have the 3 column layouts deactivated?
*
* This function checks to see if the Genesis install still has active 3 column layouts. Since
* child themes and plugins can deregister layouts, we need to know if they have deregistered the 3 column layouts.
*
* @since 0.9.2
*/
function ss_has_3_column_layouts () {
$_layouts = ( array ) genesis_get_layouts ();
$_layouts = array_keys ( $_layouts );
$_3_column = array_intersect ( $_layouts , array ( 'content-sidebar-sidebar' , 'sidebar-content-sidebar' , 'sidebar-sidebar-content' ) );
return ! empty ( $_3_column );
}