diff --git a/genesis-simple-sidebars.php b/genesis-simple-sidebars.php new file mode 100644 index 0000000..622bc3d --- /dev/null +++ b/genesis-simple-sidebars.php @@ -0,0 +1,187 @@ +plugin_dir_url = plugin_dir_url( __FILE__ ); + $this->plugin_dir_path = plugin_dir_path( __FILE__ ); + + // For backward compatibility + define( 'SS_PLUGIN_DIR', $this->plugin_dir_path ); + + } + + /** + * Initialize. + * + * @since 2.1.0 + */ + public function init() { + + register_activation_hook( __FILE__, array( $this, 'activation' ) ); + + $this->load_plugin_textdomain(); + $this->includes(); + $this->instantiate(); + + } + + /** + * Plugin activation hook. Runs when plugin is activated. + * + * @since 2.1.0 + */ + public function activation() { + + if ( ! defined( 'PARENT_THEME_VERSION' ) || ! version_compare( PARENT_THEME_VERSION, $this->min_genesis_version, '>=' ) ) { + + deactivate_plugins( plugin_basename( __FILE__ ) ); + wp_die( sprintf( __( 'Sorry, you cannot run Genesis Simple Sidebars without WordPress %s and Genesis %s, or greater.', 'genesis-simple-sidebars' ), $this->min_wp_version, 'http://my.studiopress.com/?download_id=91046d629e74d525b3f2978e404e7ffa', $this->min_genesis_version ) ); + + } + + } + + /** + * Load the plugin textdomain, for translation. + * + * @since 2.1.0 + */ + public function load_plugin_textdomain() { + load_plugin_textdomain( $this->plugin_textdomain, false, $this->plugin_dir_path . 'languages/' ); + } + + /** + * All general includes. + * + * @since 2.1.0 + */ + public function includes() { + + //require_once( $this->plugin_dir_path . 'includes/functions.php' ); + //require_once( $this->plugin_dir_path . 'includes/deprecated.php' ); + + } + + /** + * Include the class file, instantiate the classes, create objects. + * + * @since 2.1.0 + */ + public function instantiate() { + + add_action( 'genesis_setup', array( $this, 'genesis_dependencies' ) ); + + } + + /** + * Load and instantiate any Genesis dependencies. + * + * @since 2.1.0 + */ + public function genesis_dependencies() { + + require_once( $this->plugin_dir_path . 'includes/class-genesis-simple-sidebars-core.php' ); + $this->core = new Genesis_Simple_Sidebars_Core; + $this->core->init(); + + // Anything beyond this point should only be loaded if in the admin. + if ( ! is_admin() ) { + return; + } + + require_once( $this->plugin_dir_path . 'includes/class-genesis-simple-sidebars-entry.php' ); + $this->entry = new Genesis_Simple_Sidebars_Entry; + $this->entry->init(); + + require_once( $this->plugin_dir_path . 'includes/class-genesis-simple-sidebars-term.php' ); + $this->term = new Genesis_Simple_Sidebars_Term; + $this->term->init(); + + require_once( $this->plugin_dir_path . 'includes/class-genesis-simple-sidebars-admin.php' ); + $this->admin = new Genesis_Simple_Sidebars_Admin; + $this->admin->admin_menu(); + + // For backward compatibility + global $_genesis_simple_sidebars; + $_genesis_simple_sidebars = $this->admin; + + } + +} + +/** + * Helper function to retrieve the static object without using globals. + * + * @since 2.1.0 + */ +function Genesis_Simple_Sidebars() { + + static $object; + + if ( null == $object ) { + $object = new Genesis_Simple_Sidebars; + } + + return $object; +} +/** + * Initialize the object on `plugins_loaded`. + */ +add_action( 'plugins_loaded', array( Genesis_Simple_Sidebars(), 'init' ) ); diff --git a/includes/admin.php b/includes/class-genesis-simple-sidebars-admin.php similarity index 83% rename from includes/admin.php rename to includes/class-genesis-simple-sidebars-admin.php index f045e32..a25dac6 100644 --- a/includes/admin.php +++ b/includes/class-genesis-simple-sidebars-admin.php @@ -13,6 +13,25 @@ */ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { + /** + * Settings field. + * + * @since 2.1.0 + */ + public $settings_field; + + /** + * Constructor. + */ + public function __construct() { + + $this->settings_field = Genesis_Simple_Sidebars()->settings_field; + + // For backward compatibility + define( 'SS_SETTINGS_FIELD', $this->settings_field ); + + } + /** * Create an admin menu item and settings page. * @@ -22,7 +41,7 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { * * @see Genesis_Admin_Import_Export::actions() Handle creating, editing, and deleting sidebars. */ - public function __construct() { + public function admin_menu() { $page_id = 'simple-sidebars'; @@ -34,14 +53,12 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { ) ); - //* Empty, as we'll be building the page manually + // 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, $this->settings_field ); - $this->create( $page_id, $menu_ops, $page_ops, $settings_field ); - - //* Simpe Sidebar actions (create, edit, or delete) + // Simpe Sidebar actions (create, edit, or delete) add_action( 'admin_init', array( $this, 'actions' ) ); } @@ -56,14 +73,14 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { */ 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' ); + if ( isset( $_REQUEST['action'] ) && 'edit' == $_REQUEST['action'] ) { + require_once( Genesis_Simple_Sidebars()->plugin_dir_path . '/includes/views/admin-edit.php' ); + } + else { + require_once( Genesis_Simple_Sidebars()->plugin_dir_path . '/includes/views/admin-main.php' ); + } echo '
'; @@ -129,8 +146,9 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { */ public function actions() { - if ( ! genesis_is_menu_page( 'simple-sidebars' ) ) + if ( ! genesis_is_menu_page( 'simple-sidebars' ) ) { return; + } /** * This section handles the data if a new sidebar is created @@ -164,8 +182,9 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { */ public function notices() { - if ( ! genesis_is_menu_page( 'simple-sidebars' ) ) + if ( ! genesis_is_menu_page( 'simple-sidebars' ) ) { return; + } $pattern = '

%s

'; @@ -201,17 +220,19 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { exit; } - //* nonce verification + // 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'] ) ) + // 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( $this->settings_field ); - $db = (array) get_option( SS_SETTINGS_FIELD ); $new = array( sanitize_title_with_dashes( $args['id'] ) => array( - 'name' => esc_html( $args['name'] ), + 'name' => esc_html( $args['name'] ), 'description' => esc_html( $args['description'] ) ) ); @@ -223,7 +244,7 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { $_sidebars = wp_parse_args( $new, $db ); - update_option( SS_SETTINGS_FIELD, $_sidebars ); + update_option( $this->settings_field, $_sidebars ); wp_redirect( admin_url( 'admin.php?page=simple-sidebars&created=true' ) ); exit; @@ -242,14 +263,15 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { exit; } - //* nonce verification + // 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'] ) ) + // 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 ); + $db = (array) get_option( $this->settings_field ); $new = array( sanitize_title_with_dashes( $args['id'] ) => array( 'name' => esc_html( $args['name'] ), @@ -264,7 +286,7 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { $_sidebars = wp_parse_args( $new, $db ); - update_option( SS_SETTINGS_FIELD, $_sidebars ); + update_option( $this->settings_field, $_sidebars ); wp_redirect( admin_url( 'admin.php?page=simple-sidebars&edited=true' ) ); exit; @@ -283,10 +305,10 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { exit; } - //* nonce verification + // nonce verification check_admin_referer( 'simple-sidebars-action_delete-sidebar' ); - $_sidebars = (array) get_option( SS_SETTINGS_FIELD ); + $_sidebars = (array) get_option( $this->settings_field ); if ( ! isset( $_sidebars[$id] ) ) { wp_die( $this->error( 4 ) ); @@ -295,7 +317,7 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { unset( $_sidebars[$id] ); - update_option( SS_SETTINGS_FIELD, $_sidebars ); + update_option( $this->settings_field, $_sidebars ); wp_redirect( admin_url( 'admin.php?page=simple-sidebars&deleted=true' ) ); exit; @@ -335,17 +357,3 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic { } } - -add_action( 'genesis_admin_menu', 'simplesidebars_settings_menu' ); -/** - * Instantiate the class to create the menu. - * - * @since 1.0.0 - */ -function simplesidebars_settings_menu() { - - global $_genesis_simple_sidebars_admin; - - $_genesis_simple_sidebars_admin = new Genesis_Simple_Sidebars_Admin; - -} diff --git a/includes/class-genesis-simple-sidebars-core.php b/includes/class-genesis-simple-sidebars-core.php new file mode 100644 index 0000000..ee22349 --- /dev/null +++ b/includes/class-genesis-simple-sidebars-core.php @@ -0,0 +1,197 @@ +core->get_sidebars(); + + if ( ! $sidebars ) { + return; + } + + // Cycle through created sidebars, register them as widget areas + foreach ( (array) $sidebars as $id => $info ) { + + if ( ! isset( $info['name'] ) || ! isset( $info['description'] ) ) { + continue; + } + + genesis_register_sidebar( array( + 'name' => esc_html( $info['name'] ), + 'id' => $id, + 'description' => esc_html( $info['description'] ), + 'editable' => 1, + ) ); + + } + + } + + /** + * Remove default sidebars and inject custom sidebars. + * + * @since 2.1.0 + */ + public function swap_sidebars() { + + remove_action( 'genesis_sidebar', 'genesis_do_sidebar' ); + remove_action( 'genesis_sidebar_alt', 'genesis_do_sidebar_alt' ); + add_action( 'genesis_sidebar', array( $this, 'do_primary_sidebar' ) ); + add_action( 'genesis_sidebar_alt', array( $this, 'do_secondary_sidebar' ) ); + + } + + /** + * Output custom primary sidebar, if one is set. Otherwise output default. + * + * @since 2.1.0 + */ + public function do_primary_sidebar() { + + if ( ! $this->do_sidebar( '_ss_sidebar' ) ) { + genesis_do_sidebar(); + } + + } + + /** + * Output custom secondary sidebar, if one is set. Otherwise output default. + * + * @since 2.1.0 + */ + public function do_secondary_sidebar() { + + if ( ! $this->do_sidebar( '_ss_sidebar_alt' ) ) { + genesis_do_sidebar_alt(); + } + + } + + /** + * Show widgets in a particular sidebar. + * + * @param string $key sidebar id you wish to output. + * + * @since 2.1.0 + */ + public function do_sidebar( $key ) { + + if ( is_singular() && $key = genesis_get_custom_field( $key ) ) { + + if ( dynamic_sidebar( $key ) ) { + return true; + } + + } + + if ( is_tax() || is_category() || is_tag() ) { + + if ( $key = get_term_meta( get_queried_object()->term_id, $key, true ) ) { + dynamic_sidebar( $key ); + return true; + } + + } + + return false; + + } + + /** + * Get all custom registered sidebars. + * + * @since 2.1.0 + */ + public function get_sidebars( $cache = true ) { + + if ( ! $cache ) { + return stripslashes_deep( get_option( Genesis_Simple_Sidebars()->settings_field ) ); + } + + if ( is_null( $this->sidebars ) ) { + $this->sidebars = stripslashes_deep( get_option( Genesis_Simple_Sidebars()->settings_field ) ); + } + + return $this->sidebars; + + } + + /** + * Return taxonomy ids. + * + * Helper function to return the array keys from a taxonomy query. + * + * @since 2.1.0 + */ + public function get_public_taxonomies() { + + if ( is_null( $this->public_taxonomies ) ) { + $this->public_taxonomies = get_taxonomies( array( + 'show_ui' => true, + 'public' => true, + ) ); + } + + $this->public_taxonomies = apply_filters( 'genesis_simple_sidebars_taxonomies', array_keys( $this->public_taxonomies ) ); + + return $this->public_taxonomies; + + } + + /** + * Determines if this site has disabled 3 column layouts or not. + * + * @since 2.1.0 + */ + public function has_3_column_layout() { + + $layouts = genesis_get_layouts(); + + $three_column_layouts = array( + 'content-sidebar-sidebar', + 'sidebar-content-sidebar', + 'sidebar-sidebar-content', + ); + + foreach ( $three_column_layouts as $layout ) { + if ( array_key_exists( $layout, $layouts ) ) { + return true; + } + } + + return false; + + } + +} diff --git a/includes/class-genesis-simple-sidebars-entry.php b/includes/class-genesis-simple-sidebars-entry.php new file mode 100644 index 0000000..d89e91e --- /dev/null +++ b/includes/class-genesis-simple-sidebars-entry.php @@ -0,0 +1,62 @@ + true ) ) as $type ) { + + if ( post_type_supports( $type, 'genesis-simple-sidebars' ) || $type == 'post' || $type == 'page' ) { + add_meta_box( 'ss_inpost_metabox', __( 'Sidebar Selection', 'genesis-simple-sidebars' ), array( $this, 'metabox_content' ), $type, 'side', 'low' ); + } + + } + + } + + /** + * Include the metabox content. + * + * @since 2.1.0 + */ + public function metabox_content() { + + require_once( Genesis_Simple_Sidebars()->plugin_dir_path . 'includes/views/entry-metabox-content.php' ); + + print_r( get_post_meta( get_the_ID() ) ); + + } + + /** + * Save the metabox fields when the entry is saved. + * + * @since 2.1.0 + */ + public function metabox_save( $post_id, $post ) { + + if ( ! isset( $_POST['genesis_simple_sidebars'] ) ) { + return; + } + + $data = wp_parse_args( $_POST['genesis_simple_sidebars'], array( + '_ss_sidebar' => '', + '_ss_sidebar_alt' => '', + ) ); + + genesis_save_custom_fields( $data, 'genesis-simple-sidebars-save-entry', 'genesis-simple-sidebars-save-entry-nonce', $post ); + + } + +} diff --git a/includes/class-genesis-simple-sidebars-term.php b/includes/class-genesis-simple-sidebars-term.php new file mode 100644 index 0000000..af9f64b --- /dev/null +++ b/includes/class-genesis-simple-sidebars-term.php @@ -0,0 +1,31 @@ +core->get_public_taxonomies(); + + if ( ! empty( $taxonomies ) && is_admin() && is_array( $taxonomies ) ) { + + foreach ( $taxonomies as $tax ) { + add_action( "{$tax}_edit_form", array( $this, 'term_sidebar_form' ), 9, 2 ); + } + + } + + } + + public function term_sidebar_form( $tag, $taxonomy ) { + + require_once( Genesis_Simple_Sidebars()->plugin_dir_path . 'includes/views/term-edit-sidebar-form.php' ); + + } + +} diff --git a/includes/deprecated.php b/includes/deprecated.php new file mode 100644 index 0000000..ab4cbf4 --- /dev/null +++ b/includes/deprecated.php @@ -0,0 +1,161 @@ + true ) ) as $type ) { - - if ( post_type_supports( $type, 'genesis-simple-sidebars' ) || $type == 'post' || $type == 'page' ) { - add_meta_box( 'ss_inpost_metabox', __( 'Sidebar Selection', 'genesis-simple-sidebars' ), 'ss_inpost_metabox', $type, 'side', 'low' ); - } - - } - -} - -function ss_inpost_metabox() { - - $_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) ); - global $wp_registered_sidebars; - -?> - - - - - -

- - -

- -

- - -

- -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; - if ( defined('DOING_CRON') && DOING_CRON ) return; - - //* 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' => isset( $_POST['_ss_sidebar'] ) ? $_POST['_ss_sidebar'] : '', - '_ss_sidebar_alt' => isset( $_POST['_ss_sidebar_alt'] ) ? $_POST['_ss_sidebar_alt'] : '', - ); - - //* store the custom fields - foreach ( $_sidebars as $key => $value ) { - - //* don't try to store data during revision save - if ( 'revision' === $post->post_type ) - return; - - if ( $value ) { - update_post_meta($post->ID, $key, $value); - } else { - delete_post_meta($post->ID, $key); - } - - } - -} diff --git a/includes/term.php b/includes/term.php deleted file mode 100644 index 74d08b6..0000000 --- a/includes/term.php +++ /dev/null @@ -1,69 +0,0 @@ -meta = wp_parse_args( $tag->meta, array( '_ss_sidebar' => '', '_ss_sidebar_alt' => '' ) ); - - //* Pull custom sidebars - $_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) ); - -?> - -

- - - - - - - - - - - - -
- -
- -
- -core->get_sidebars(); + +if ( array_key_exists( $_REQUEST['id'], (array) $sidebars ) ) { + $sidebar = stripslashes_deep( $sidebars[ $_REQUEST['id'] ] ); } else { wp_die( __( 'Nice try, partner. But that sidebar doesn\'t exist. Click back and try again.', 'genesis-simple-sidebars' ) ); } - -screen_icon( 'themes' ); ?> -

+?> +

@@ -15,7 +16,7 @@ screen_icon( 'themes' ); ?> - +

@@ -29,7 +30,7 @@ screen_icon( 'themes' ); ?> - + diff --git a/includes/views/main.php b/includes/views/admin-main.php similarity index 94% rename from includes/views/main.php rename to includes/views/admin-main.php index eedd871..2542455 100644 --- a/includes/views/main.php +++ b/includes/views/admin-main.php @@ -1,5 +1,4 @@ - -

+

@@ -67,4 +66,4 @@
- \ No newline at end of file + diff --git a/includes/views/entry-metabox-content.php b/includes/views/entry-metabox-content.php new file mode 100644 index 0000000..59c1324 --- /dev/null +++ b/includes/views/entry-metabox-content.php @@ -0,0 +1,32 @@ +core->get_sidebars(); +global $wp_registered_sidebars; +wp_nonce_field( 'genesis-simple-sidebars-save-entry', 'genesis-simple-sidebars-save-entry-nonce' ); + +if ( isset( $wp_registered_sidebars['sidebar'] ) ) : ?> +

+ + +

+ +

+ + +

+core->get_sidebars(); ?> + +

+ + + + + + + +core->has_3_column_layout() ) : ?> + + + + + +
+ +
+ +
diff --git a/plugin.php b/plugin.php index f1de1d8..75613e0 100644 --- a/plugin.php +++ b/plugin.php @@ -2,242 +2,19 @@ /* 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/ +Version: 2.1.0 + Text Domain: genesis-simple-sidebars Domain Path: /languages/ -Version: 2.0.3 - 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() { - - if ( ! defined( 'PARENT_THEME_VERSION' ) || ! version_compare( PARENT_THEME_VERSION, '2.0.0', '>=' ) ) - ss_deactivate( '2.0.0', '3.6' ); - -} - -/** - * Deactivate Simple Sidebars. - * - * This function deactivates Simple Sidebars. - * - * @since 1.0.0 - */ -function ss_deactivate( $genesis_version = '1.8.0', $wp_version = '3.3' ) { - - deactivate_plugins( plugin_basename( __FILE__ ) ); - wp_die( sprintf( __( 'Sorry, you cannot run Simple Sidebars without WordPress %s and Genesis %s, or greater.', 'genesis-simple-sidebars' ), $wp_version, 'http://my.studiopress.com/?download_id=91046d629e74d525b3f2978e404e7ffa', $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( 'genesis-simple-sidebars', false, 'genesis-simple-sidebars/languages' ); - - //* 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 ) { - - if ( ! isset( $info['name'] ) || ! isset( $info['description'] ) ) { - continue; - } - - 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' ) { - - static $taxonomies = null; - - 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[$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[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true; - } - - if ( is_tax() ) { - if ( null === $taxonomies ) - $taxonomies = ss_get_taxonomies(); - - foreach ( $taxonomies as $tax ) { - if ( 'post_tag' == $tax || 'category' == $tax ) - continue; - - if ( is_tax( $tax ) ) { - $obj = get_queried_object(); - $term = get_term( $obj->term_id, $tax ); - 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 ) ); - 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 ); - -} +require_once( plugin_dir_path( __FILE__ ) . 'genesis-simple-sidebars.php' );