summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/modules/theme-tools/social-menu.php')
-rw-r--r--plugins/jetpack/modules/theme-tools/social-menu.php113
1 files changed, 113 insertions, 0 deletions
diff --git a/plugins/jetpack/modules/theme-tools/social-menu.php b/plugins/jetpack/modules/theme-tools/social-menu.php
new file mode 100644
index 00000000..16c66b6a
--- /dev/null
+++ b/plugins/jetpack/modules/theme-tools/social-menu.php
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Social Menu.
+ *
+ * This feature will only be activated for themes that declare their support.
+ * This can be done by adding code similar to the following during the
+ * 'after_setup_theme' action:
+ *
+ * add_theme_support( 'jetpack-social-menu' );
+ */
+
+/**
+ * Activate the Social Menu plugin.
+ *
+ * @uses current_theme_supports()
+ */
+function jetpack_social_menu_init() {
+ // Only load our code if our theme declares support
+ if ( ! current_theme_supports( 'jetpack-social-menu' ) ) {
+ return;
+ }
+
+ /*
+ * Social Menu description.
+ *
+ * Rename the social menu description.
+ *
+ * @module theme-tools
+ *
+ * @since 3.9.0
+ *
+ * @param string $social_menu_description Social Menu description
+ */
+ $social_menu_description = apply_filters( 'jetpack_social_menu_description', __( 'Social Menu', 'jetpack' ) );
+
+ // Register a new menu location
+ register_nav_menus(
+ array(
+ 'jetpack-social-menu' => esc_html( $social_menu_description ),
+ )
+ );
+
+ // Enqueue CSS
+ add_action( 'wp_enqueue_scripts', 'jetpack_social_menu_style' );
+
+ // Load SVG icons related functions and filters
+ if ( 'svg' === jetpack_social_menu_get_type() ) {
+ require dirname( __FILE__ ) . '/social-menu/icon-functions.php';
+ }
+}
+add_action( 'after_setup_theme', 'jetpack_social_menu_init', 99 );
+
+/**
+ * Return the type of menu the theme is using.
+ *
+ * @uses get_theme_support()
+ * @return null|string $menu_type
+ */
+function jetpack_social_menu_get_type() {
+ $options = get_theme_support( 'jetpack-social-menu' );
+
+ if ( empty( $options ) ) {
+ $menu_type = null;
+ } else {
+ $menu_type = ( in_array( $options[0], array( 'genericons', 'svg' ) ) ) ? $options[0] : 'genericons';
+ }
+
+ return $menu_type;
+}
+
+/**
+ * Function to enqueue the CSS.
+ */
+function jetpack_social_menu_style() {
+ $menu_type = jetpack_social_menu_get_type();
+
+ if ( ! $menu_type ) {
+ return;
+ }
+
+ $deps = ( 'genericons' === $menu_type ) ? array( 'genericons' ) : null;
+
+ if ( has_nav_menu( 'jetpack-social-menu' ) ) {
+ wp_enqueue_style( 'jetpack-social-menu', plugins_url( 'social-menu/social-menu.css', __FILE__ ), $deps, '1.0' );
+ }
+}
+
+/**
+ * Create the function for the menu.
+ */
+function jetpack_social_menu() {
+ if ( has_nav_menu( 'jetpack-social-menu' ) ) :
+ $menu_type = jetpack_social_menu_get_type();
+ $link_after = '</span>';
+
+ if ( 'svg' === $menu_type ) {
+ $link_after .= jetpack_social_menu_get_svg( array( 'icon' => 'chain' ) );
+ } ?>
+ <nav class="jetpack-social-navigation jetpack-social-navigation-<?php echo esc_attr( $menu_type ); ?>" role="navigation" aria-label="<?php esc_html_e( 'Social Links Menu', 'jetpack' ); ?>">
+ <?php
+ wp_nav_menu(
+ array(
+ 'theme_location' => 'jetpack-social-menu',
+ 'link_before' => '<span class="screen-reader-text">',
+ 'link_after' => $link_after,
+ 'depth' => 1,
+ )
+ );
+ ?>
+ </nav><!-- .jetpack-social-navigation -->
+ <?php
+ endif;
+}