diff --git a/admin.php b/admin.php
deleted file mode 100644
index b10cd86..0000000
--- a/admin.php
+++ /dev/null
@@ -1,181 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
- |
- |
-
-
-
-
-
- |
- |
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $info ) { ?>
-
-
-
- >
-
- %s', admin_url('admin.php?page=simple-sidebars&action=edit&id=' . esc_html( $id ) ), esc_html( $info['name'] ), esc_html( $info['name'] ) );
- } else {
- printf( '%s', esc_html( $info['name'] ) );
- }
- ?>
-
-
-
-
-
-
- |
- |
- |
-
-
- array(
- 'name' => esc_html( $args['name'] ),
- 'description' => esc_html( $args['description'] )
- )
- );
-
- if ( array_key_exists( $args['id'], $db ) ) {
- wp_die( ss_error_message(2) );
- exit;
- }
-
- $_sidebars = wp_parse_args( $new, $db );
-
- update_option( SS_SETTINGS_FIELD, $_sidebars );
- wp_redirect( admin_url('admin.php?page=simple-sidebars&created=true') );
- exit;
-
-}
-
-function ss_edit_sidebar( $args = array() ) {
-
- if ( empty( $args['name'] ) || empty( $args['id'] ) ) {
- wp_die( ss_error_message(3) );
- exit;
- }
-
- // nonce verification
- check_admin_referer('simple-sidebars-action_edit-sidebar');
-
- // WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
- if ( is_numeric( $args['id'] ) )
- $args['id'] = sanitize_title_with_dashes( $args['name'] );
-
- $db = (array)get_option(SS_SETTINGS_FIELD);
- $new = array(
- sanitize_title_with_dashes( $args['id'] ) => array(
- 'name' => esc_html( $args['name'] ),
- 'description' => esc_html( $args['description'] )
- )
- );
-
- if ( !array_key_exists( $args['id'], $db ) ) {
- wp_die( ss_error_message(3) );
- exit;
- }
-
- $_sidebars = wp_parse_args( $new, $db );
-
- update_option( SS_SETTINGS_FIELD, $_sidebars );
- wp_redirect( admin_url('admin.php?page=simple-sidebars&edited=true') );
- exit;
-
-}
-
-function ss_delete_sidebar( $id = '' ) {
-
- if ( empty( $id ) ) {
- wp_die( ss_error_message(4) );
- exit;
- }
-
- // nonce verification
- check_admin_referer('simple-sidebars-action_delete-sidebar');
-
- $_sidebars = (array)get_option( SS_SETTINGS_FIELD );
-
- if ( !isset( $_sidebars[$id] ) ) {
- wp_die( ss_error_message(4) );
- exit;
- }
-
- unset( $_sidebars[$id] );
-
- update_option( SS_SETTINGS_FIELD, $_sidebars );
- wp_redirect( admin_url('admin.php?page=simple-sidebars&deleted=true') );
- exit;
-
-}
-
-function ss_error_message( $error = false ) {
-
- if ( !$error ) return false;
-
- switch( (int)$error ) {
-
- case 1:
- return __('Oops! Please choose a valid Name and ID for this sidebar', 'ss');
- break;
- case 2:
- return __('Oops! That sidebar ID already exists', 'ss');
- break;
- case 3:
- return __('Oops! You are trying to edit a sidebar that does not exist, or is not editable', 'ss');
- break;
- case 4:
- return __('Oops! You are trying to delete a sidebar that does not exist, or cannot be deleted', 'ss');
- break;
- default:
- return __('Oops! Something went wrong. Try again.', 'ss');
-
- }
-
-}
-
-add_action('admin_notices', 'ss_success_message');
-function ss_success_message() {
-
- if ( !isset( $_REQUEST['page'] ) || $_REQUEST['page'] != 'simple-sidebars' ) {
- return;
- }
-
- $format = '';
-
- if ( isset( $_REQUEST['created'] ) && $_REQUEST['created'] === 'true' ) {
- printf( $format, __('New sidebar successfully created!', 'ss') );
- return;
- }
-
- if ( isset( $_REQUEST['edited'] ) && $_REQUEST['edited'] === 'true' ) {
- printf( $format, __('Sidebar successfully edited!', 'ss') );
- return;
- }
-
- if ( isset( $_REQUEST['deleted'] ) && $_REQUEST['deleted'] === 'true' ) {
- printf( $format, __('Sidebar successfully deleted.', 'ss') );
- return;
- }
-
- return;
-
-}
\ No newline at end of file
diff --git a/includes/admin.php b/includes/admin.php
new file mode 100644
index 0000000..01cf047
--- /dev/null
+++ b/includes/admin.php
@@ -0,0 +1,349 @@
+ array(
+ 'parent_slug' => 'genesis',
+ 'page_title' => __( 'Genesis - Simple Sidebars', 'ss' ),
+ 'menu_title' => __( 'Simple Sidebars', 'ss' )
+ )
+ );
+
+ /** Empty, as we'll be building the page manually */
+ $page_ops = array();
+
+ $settings_field = SS_SETTINGS_FIELD;
+
+ $this->create( $page_id, $menu_ops, $page_ops, $settings_field );
+
+ /** Simpe Sidebar actions (create, edit, or delete) */
+ add_action( 'admin_init', array( $this, 'actions' ) );
+
+ }
+
+ /**
+ * Callback for displaying the Simple Sidebars admin page.
+ *
+ * Echoes out HTML.
+ *
+ * @since 1.0.0
+ *
+ */
+ public function admin() {
+
+ $_sidebars = get_option( $this->settings_field );
+
+ echo '';
+
+ if ( isset( $_REQUEST['action'] ) && 'edit' == $_REQUEST['action'] )
+ require_once( SS_PLUGIN_DIR . '/includes/views/edit.php' );
+ else
+ require_once( SS_PLUGIN_DIR . '/includes/views/main.php' );
+
+ echo '
';
+
+ }
+
+ /**
+ * Display sidebar table rows.
+ *
+ * Displays table rows of sidebars for viewing and editing on the main admin page.
+ *
+ * @since 1.0.0
+ *
+ */
+ public function table_rows() {
+
+ global $wp_registered_sidebars;
+
+ $_sidebars = $wp_registered_sidebars;
+
+ $alt = true;
+
+ foreach ( (array) $_sidebars as $id => $info ) :
+
+ $is_editable = isset( $info['editable'] ) && $info['editable'] ? true : false;
+
+ ?>
+
+ >
+
+ %s', admin_url('admin.php?page=simple-sidebars&action=edit&id=' . esc_html( $id ) ), esc_html( $info['name'] ), esc_html( $info['name'] ) );
+ } else {
+ printf( '%s', esc_html( $info['name'] ) );
+ }
+ ?>
+
+
+
+
+
+
+ |
+ |
+ |
+
+
+ create_sidebar( $_POST['new_sidebar'] );
+ }
+
+ /**
+ * This section will handle the data if a sidebar is deleted
+ */
+ if ( isset( $_REQUEST['action'] ) && 'delete' == $_REQUEST['action'] && isset( $_REQUEST['id'] ) ) {
+ $this->delete_sidebar( $_REQUEST['id'] );
+ }
+
+ /**
+ * This section will handle the data if a sidebar is to be modified
+ */
+ if ( isset( $_REQUEST['action'] ) && 'edit' == $_REQUEST['action'] && ! isset( $_REQUEST['id'] ) ) {
+ $this->edit_sidebar( $_POST['edit_sidebar'] );
+ }
+
+ }
+
+ /**
+ * Add custom notices that display when you successfully create, edit, or delete a sidebar.
+ *
+ * @since 1.0.0
+ *
+ * @return null Returns null if not on the correct admin page.
+ */
+ public function notices() {
+
+ if ( ! genesis_is_menu_page( 'simple-sidebars' ) )
+ return;
+
+ $pattern = '';
+
+ if ( isset( $_REQUEST['created'] ) && 'true' === $_REQUEST['created'] ) {
+ printf( $pattern, __( 'New sidebar successfully created!', 'ss' ) );
+ return;
+ }
+
+ if ( isset( $_REQUEST['edited'] ) && 'true' === $_REQUEST['edited'] ) {
+ printf( $pattern, __( 'Sidebar successfully edited!', 'ss' ) );
+ return;
+ }
+
+ if ( isset( $_REQUEST['deleted'] ) && 'true' === $_REQUEST['deleted'] ) {
+ printf( $pattern, __( 'Sidebar successfully deleted.', 'ss' ) );
+ return;
+ }
+
+ return;
+
+ }
+
+ /**
+ * Create a sidebar.
+ *
+ * @since 1.0.0
+ *
+ */
+ protected function create_sidebar( $args = array() ) {
+
+ if ( empty( $args['name'] ) || empty( $args['id'] ) ) {
+ wp_die( $this->error( 1 ) );
+ exit;
+ }
+
+ // nonce verification
+ check_admin_referer( 'simple-sidebars-action_create-sidebar' );
+
+ // WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
+ if ( is_numeric( $args['id'] ) )
+ $args['id'] = sanitize_title_with_dashes( $args['name'] );
+
+ $db = (array) get_option( SS_SETTINGS_FIELD );
+ $new = array(
+ sanitize_title_with_dashes( $args['id'] ) => array(
+ 'name' => esc_html( $args['name'] ),
+ 'description' => esc_html( $args['description'] )
+ )
+ );
+
+ if ( array_key_exists( $args['id'], $db ) ) {
+ wp_die( $this->error( 2 ) );
+ exit;
+ }
+
+ $_sidebars = wp_parse_args( $new, $db );
+
+ update_option( SS_SETTINGS_FIELD, $_sidebars );
+ wp_redirect( admin_url( 'admin.php?page=simple-sidebars&created=true' ) );
+ exit;
+
+ }
+
+ /**
+ * Edit a sidebar.
+ *
+ * @since 1.0.0
+ *
+ */
+ protected function edit_sidebar( $args = array() ) {
+
+ if ( empty( $args['name'] ) || empty( $args['id'] ) ) {
+ wp_die( $this->error( 3 ) );
+ exit;
+ }
+
+ // nonce verification
+ check_admin_referer( 'simple-sidebars-action_edit-sidebar' );
+
+ // WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
+ if ( is_numeric( $args['id'] ) )
+ $args['id'] = sanitize_title_with_dashes( $args['name'] );
+
+ $db = (array) get_option( SS_SETTINGS_FIELD );
+ $new = array(
+ sanitize_title_with_dashes( $args['id'] ) => array(
+ 'name' => esc_html( $args['name'] ),
+ 'description' => esc_html( $args['description'] )
+ )
+ );
+
+ if ( ! array_key_exists( $args['id'], $db ) ) {
+ wp_die( $this->error( 3 ) );
+ exit;
+ }
+
+ $_sidebars = wp_parse_args( $new, $db );
+
+ update_option( SS_SETTINGS_FIELD, $_sidebars );
+ wp_redirect( admin_url( 'admin.php?page=simple-sidebars&edited=true' ) );
+ exit;
+
+ }
+
+ /**
+ * Delete a sidebar.
+ *
+ * @since 1.0.0
+ *
+ */
+ protected function delete_sidebar( $id = '' ) {
+
+ if ( empty( $id ) ) {
+ wp_die( $this->error( 4 ) );
+ exit;
+ }
+
+ // nonce verification
+ check_admin_referer( 'simple-sidebars-action_delete-sidebar' );
+
+ $_sidebars = (array) get_option( SS_SETTINGS_FIELD );
+
+ if ( ! isset( $_sidebars[$id] ) ) {
+ wp_die( $this->error( 4 ) );
+ exit;
+ }
+
+ unset( $_sidebars[$id] );
+
+ update_option( SS_SETTINGS_FIELD, $_sidebars );
+ wp_redirect( admin_url( 'admin.php?page=simple-sidebars&deleted=true' ) );
+ exit;
+
+ }
+
+ /**
+ * Returns an error message by ID.
+ *
+ * @since 1.0.0
+ *
+ * @return string Returns an error string based on an error ID.
+ */
+ protected function error( $error = false ) {
+
+ if ( ! $error )
+ return false;
+
+ switch( (int) $error ) {
+
+ case 1:
+ return __( 'Oops! Please choose a valid Name and ID for this sidebar', 'ss' );
+ break;
+ case 2:
+ return __( 'Oops! That sidebar ID already exists', 'ss' );
+ break;
+ case 3:
+ return __( 'Oops! You are trying to edit a sidebar that does not exist, or is not editable', 'ss' );
+ break;
+ case 4:
+ return __( 'Oops! You are trying to delete a sidebar that does not exist, or cannot be deleted', 'ss' );
+ break;
+ default:
+ return __( 'Oops! Something went wrong. Try again.', 'ss' );
+
+ }
+
+ }
+
+}
+
+add_action( 'genesis_admin_menu', 'simplesidebars_settings_menu' );
+/**
+ * Instantiate the class to create the menu.
+ *
+ * @since 1.0.0
+ */
+function simplesidebars_settings_menu() {
+
+ new Genesis_Simple_Sidebars_Admin;
+
+}
\ No newline at end of file
diff --git a/inpost.php b/includes/inpost.php
similarity index 95%
rename from inpost.php
rename to includes/inpost.php
index 735b68f..4012419 100644
--- a/inpost.php
+++ b/includes/inpost.php
@@ -4,20 +4,26 @@
* so that users can choose what sidebar to use.
*/
add_action('admin_menu', 'ss_add_inpost_metabox');
-function ss_add_inpost_metabox() {
+function ss_add_inpost_metabox() {
+
foreach ( (array)get_post_types( array( 'public' => true ) ) as $type ) {
+
if ( post_type_supports( $type, 'genesis-simple-sidebars' ) || $type == 'post' || $type == 'page' ) {
add_meta_box('ss_inpost_metabox', __('Sidebar Selection', 'ss'), 'ss_inpost_metabox', $type, 'side', 'low');
- }
+ }
+
}
+
}
-function ss_inpost_metabox() {
+function ss_inpost_metabox() {
+
$_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
+
?>
-
+
-
+
@@ -45,8 +51,8 @@ function ss_inpost_metabox() {
?>
-
-ID;
-
+
// don't try to save the data under autosave, ajax, or future post.
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
if ( defined('DOING_AJAX') && DOING_AJAX ) return;
@@ -67,17 +73,17 @@ function ss_inpost_metabox_save( $post_id, $post ) {
// is the user allowed to edit the post or page?
if ( ( 'page' == $_POST['post_type'] && !current_user_can('edit_page', $post->ID) ) || !current_user_can('edit_post', $post->ID ) )
return $post->ID;
-
+
$_sidebars = array(
'_ss_sidebar' => $_POST['_ss_sidebar'],
'_ss_sidebar_alt' => $_POST['_ss_sidebar_alt']
);
-
+
// store the custom fields
foreach ( $_sidebars as $key => $value ) {
-
+
if ( $post->post_type == 'revision' ) return; // don't try to store data during revision save
-
+
if ( $value ) {
// save/update
update_post_meta($post->ID, $key, $value);
@@ -87,5 +93,5 @@ function ss_inpost_metabox_save( $post_id, $post ) {
}
}
-
+
}
\ No newline at end of file
diff --git a/term.php b/includes/term.php
similarity index 95%
rename from term.php
rename to includes/term.php
index 924a6f3..abbc6b4 100644
--- a/term.php
+++ b/includes/term.php
@@ -5,26 +5,31 @@
* are passed via the hook so that we can use them.
*/
function ss_term_edit_init() {
+
$taxonomies = ss_get_taxonomies();
- if( !empty( $taxonomies ) && is_admin() && is_array( $taxonomies ) ) {
+
+ if ( ! empty( $taxonomies ) && is_admin() && is_array( $taxonomies ) ) {
+
foreach( $taxonomies as $tax )
add_action( "{$tax}_edit_form", 'ss_term_sidebar', 9, 2 );
+
}
+
}
function ss_term_sidebar($tag, $taxonomy) {
-
+
// Merge Defaults to prevent notices
$tag->meta = wp_parse_args( $tag->meta, array( '_ss_sidebar' => '', '_ss_sidebar_alt' => '' ) );
// Pull custom sidebars
$_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
-
+
?>
-
+
+
+
+
\ No newline at end of file
diff --git a/includes/views/main.php b/includes/views/main.php
new file mode 100644
index 0000000..d3e3501
--- /dev/null
+++ b/includes/views/main.php
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+
+
+
+
+
+ |
+ |
+ |
+
+
+
+
+
+ table_rows(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin.php b/plugin.php
index bea01c0..13be297 100644
--- a/plugin.php
+++ b/plugin.php
@@ -3,102 +3,159 @@
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.
-Version: 0.9.2.1
Author: Nathan Rice
Author URI: http://www.nathanrice.net/
+
Text Domain: ss
Domain Path: /languages/
+
+Version: 1.0.0
+
+License: GNU General Public License v2.0 (or later)
+License URI: http://www.opensource.org/licenses/gpl-license.php
*/
-// require Genesis 1.2 upon activation
-register_activation_hook(__FILE__, 'ss_activation_check');
+/** 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() {
- $latest = '1.2';
-
- $theme_info = get_theme_data(TEMPLATEPATH.'/style.css');
-
- if( basename(TEMPLATEPATH) != 'genesis' ) {
- load_plugin_textdomain( 'ss', false, 'genesis-simple-sidebars/languages' );
- deactivate_plugins(plugin_basename(__FILE__)); // Deactivate ourself
- wp_die( sprintf( __('Sorry, you can\'t activate unless you have installed Genesis', 'ss'), 'http://www.studiopress.com/themes/genesis' ) );
- }
-
- if( version_compare( $theme_info['Version'], $latest, '<' ) ) {
- deactivate_plugins(plugin_basename(__FILE__)); // Deactivate ourself
- wp_die( sprintf( __('Sorry, you cannot activate without Genesis %s or greater', 'ss'), 'http://www.studiopress.com/support/showthread.php?t=19576', $latest ) );
- }
+ if ( 'genesis' != basename( TEMPLATEPATH ) ) {
+ ss_deactivate( '1.8.0', '3.3' );
+ }
}
/**
- * Hook into Genesis
+ * Deactivate Simple Sidebars.
+ *
+ * This function deactivates Simple Sidebars.
+ *
+ * @since 1.0.0
*/
-add_action( 'genesis_init', 'ss_genesis_init', 12 );
-function ss_genesis_init() {
- // Define our constants
- define( 'SS_SETTINGS_FIELD', 'ss-settings' );
- define( 'SS_PLUGIN_DIR', dirname( __FILE__ ) );
+function ss_deactivate( $genesis_version = '1.8.0', $wp_version = '3.3' ) {
- // required hooks
+ deactivate_plugins( plugin_basename( __FILE__ ) );
+ wp_die( sprintf( __( 'Sorry, you cannot run Simple Sidebars without WordPress %s and Genesis %s, or greater.', 'ss' ), $wp_version, 'http://www.studiopress.com/support/showthread.php?t=19576', $genesis_version ) );
+
+}
+
+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 */
+ load_plugin_textdomain( 'ss', false, 'genesis-simple-sidebars/languages' );
+
+ /** required hooks */
add_action( 'get_header', 'ss_sidebars_init' );
add_action( 'widgets_init', 'ss_register_sidebars' );
- if ( !is_admin() )
+
+ /** The rest is admin stuff, so load only if we're in the admin area */
+ if ( ! is_admin() )
return;
- // Include admin files
- load_plugin_textdomain( 'ss', false, 'genesis-simple-sidebars/languages' );
- require_once( SS_PLUGIN_DIR . '/admin.php' );
- require_once( SS_PLUGIN_DIR . '/functions.php' );
- require_once( SS_PLUGIN_DIR . '/inpost.php' );
- require_once( SS_PLUGIN_DIR . '/term.php' );
- // let the child theme hook the genesis_simple_sidebars_taxonomies filter before hooking term edit
+ /** 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' );
+
}
/**
- * This function registers the created sidebars
+ * 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 ( !$_sidebars ) return;
-
- foreach ( (array)$_sidebars as $id => $info ) {
-
- register_sidebar(array(
+
+ /** 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 ) {
+
+ register_sidebar( array(
'name' => esc_html( $info['name'] ),
'id' => $id,
'description' => esc_html( $info['description'] ),
'editable' => 1,
-
+
'before_widget' => '\n",
'before_title' => '\n"
- ));
-
- }
-
-}
+ ) );
+ }
+
+}
/**
+ * 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');
+
+ 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' ) )
@@ -106,44 +163,62 @@ function ss_do_sidebar_alt() {
}
-function ss_do_one_sidebar( $bar = '_ss_sidebar' ) {
+/**
+ * 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' ) {
+
static $taxonomies = null;
-
- if ( is_singular() && $_bar = genesis_get_custom_field( $bar ) ) {
- if ( dynamic_sidebar( $_bar ) ) return true;
+
+ if ( is_singular() && $sidebar_key = genesis_get_custom_field( $sidebar_key ) ) {
+ if ( dynamic_sidebar( $sidebar_key ) ) return true;
}
-
+
if ( is_category() ) {
- $term = get_term( get_query_var('cat'), 'category' );
- if( isset( $term->meta[$bar] ) && dynamic_sidebar( $term->meta[$bar] ) ) return true;
+ $term = get_term( get_query_var( 'cat' ), 'category' );
+ if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
}
-
+
if ( is_tag() ) {
- $term = get_term( get_query_var('tag_id'), 'post_tag' );
- if( isset( $term->meta[$bar] ) && dynamic_sidebar( $term->meta[$bar] ) ) return true;
+ $term = get_term( get_query_var( 'tag_id' ), 'post_tag' );
+ if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
}
-
+
if ( is_tax() ) {
- if( $taxonomies === null )
+ if ( null === $taxonomies )
$taxonomies = ss_get_taxonomies();
-
- foreach( $taxonomies as $tax ) {
- if( $tax == 'post_tag' || $tax == 'category' )
+
+ foreach ( $taxonomies as $tax ) {
+ if ( 'post_tag' == $tax || 'category' == $tax )
continue;
-
- if( is_tax( $tax ) ) {
+
+ if ( is_tax( $tax ) ) {
$obj = get_queried_object();
$term = get_term( $obj->term_id, $tax );
- if( isset( $term->meta[$bar] ) && dynamic_sidebar( $term->meta[$bar] ) ) return true;
+ if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
break;
}
}
}
-
+
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 ) );
@@ -151,11 +226,20 @@ function ss_get_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 );
}