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 = '

%s

'; - - 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 = '

%s

'; + + 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 ) ); + ?> - + - +

- -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 ) ); - + ?>

- +
@@ -41,7 +46,7 @@ function ss_term_sidebar($tag, $taxonomy) { +?>
@@ -59,6 +64,6 @@ function ss_term_sidebar($tag, $taxonomy) { } ?>
- + +

+ +
+ + + + + + + + + + + + + + + + + + + +
+

+ + +

+ +

+ +
\ 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' => '
', 'after_widget' => "
\n", 'before_title' => '

', 'after_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 ); }