HEX
Server: Apache
System: Linux p3plzcpnl489499.prod.phx3.secureserver.net 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: dwauav0tm6jp (6177017)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/dwauav0tm6jp/hosted/justinpods_com/wp-content/themes/megaphone/core/menus.php
<?php

/**
 * Register menus
 *
 * Callback function theme menus registration and init
 *
 * @since  1.0
 */

add_action( 'init', 'megaphone_register_menus' );

if ( !function_exists( 'megaphone_register_menus' ) ) :
	function megaphone_register_menus() {
		register_nav_menu( 'megaphone_menu_primary', esc_html__( 'Primary Menu' , 'megaphone' ) );
		register_nav_menu( 'megaphone_menu_social', esc_html__( 'Social Menu' , 'megaphone' ) );
		register_nav_menu( 'megaphone_menu_subscribe', esc_html__( 'Subscribe Menu' , 'megaphone' ) );
		register_nav_menu( 'megaphone_menu_donate', esc_html__( 'Donate Menu' , 'megaphone' ) );
		register_nav_menu( 'megaphone_menu_secondary_1', esc_html__( 'Secondary Menu 1' , 'megaphone' ) );
		register_nav_menu( 'megaphone_menu_secondary_2', esc_html__( 'Secondary Menu 2' , 'megaphone' ) );
	}
endif;



/**
 * wp_setup_nav_menu_item callback
 *
 * Get our meta data from nav menu
 *
 * @since  1.0
 */

add_filter( 'wp_setup_nav_menu_item', 'megaphone_get_menu_meta' );

if ( !function_exists( 'megaphone_get_menu_meta' ) ):
	function megaphone_get_menu_meta( $menu_item ) {

		$defaults = array(
			'mega_cat' => 0,
			'mega' => 0
		);

		$meta = get_post_meta( $menu_item->ID, '_megaphone_meta', true );
		$meta = wp_parse_args( $meta, $defaults );
		$menu_item->megaphone_meta = $meta;

		return $menu_item;

	}
endif;


/**
 * wp_update_nav_menu_item callback
 *
 * Store values from custom fields in nav menu
 *
 * @since  1.0
 */

add_action( 'wp_update_nav_menu_item', 'megaphone_update_menu_meta', 10, 3 );


if ( !function_exists( 'megaphone_update_menu_meta' ) ):
	function megaphone_update_menu_meta( $menu_id, $menu_item_db_id, $args ) {

		$meta = array();

		if ( isset( $_REQUEST['menu-item-megaphone-mega-cat'][$menu_item_db_id] ) ) {
			$meta['mega_cat'] = 1;
		}

		if ( isset( $_REQUEST['menu-item-megaphone-mega'][$menu_item_db_id] ) ) {
			$meta['mega'] = 1;
		}

		if ( !empty( $meta ) ) {
			update_post_meta( $menu_item_db_id, '_megaphone_meta', $meta );
		} else {
			delete_post_meta( $menu_item_db_id, '_megaphone_meta' );
		}


	}
endif;




/**
 * wp_edit_nav_menu_walker callback
 *
 * Add custom fields to nav menu form
 *
 * @since  1.0
 */

add_filter( 'wp_edit_nav_menu_walker', 'megaphone_edit_menu_walker', 10, 2 );

if ( !function_exists( 'megaphone_edit_menu_walker' ) ):
	function megaphone_edit_menu_walker( $walker, $menu_id ) {

		if ( !megaphone_get_option( 'mega_menu' ) ) {
			return $walker;
		}

		class Megaphone_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {

			public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {

				parent::start_el( $default_output, $item, $depth, $args, $id );

				$inject_html = '';

				if ( $item->object == 'category' ) {
					$inject_html .= '<p class="description">
		                <label for="menu-item-megaphone-mega-cat['.$item->db_id.']">
		        		<input type="checkbox" id="menu-item-megaphone-mega-cat['.$item->db_id.']" class="widefat" name="menu-item-megaphone-mega-cat['.$item->db_id.']" value="1" '.checked( $item->megaphone_meta['mega_cat'], 1, false ). ' />
		                '.esc_html__( 'Automatically display category posts as "mega menu"', 'megaphone' ).'</label>
		            </p>';
				}

				if ( !$item->menu_item_parent && $item->object != 'category' ) {

					$inject_html .= '<p class="description">
			                <label for="menu-item-megaphone-mega['.$item->db_id.']">
			        		<input type="checkbox" id="menu-item-megaphone-mega['.$item->db_id.']" class="widefat" name="menu-item-megaphone-mega['.$item->db_id.']" value="1" '.checked( $item->megaphone_meta['mega'], 1, false ). ' />
			                '.esc_html__( 'Display submenu items as "mega menu"', 'megaphone' ).'</label>
			            </p>';
				}

				ob_start();
				do_action( 'wp_nav_menu_item_custom_fields', $item->ID, $item, $depth, $args );
				$inject_html .= ob_get_clean();

				$new_output = preg_replace( '/(?=<div.*submitbox)/', $inject_html, $default_output );

				$output .= $new_output;


			}

		}

		return 'Megaphone_Walker_Nav_Menu_Edit';
	}
endif;



/**
 * nav_menu_css_class callback
 *
 * Used to add/modify CSS classes in nav menu
 *
 * @since  1.0
 */

add_filter( 'nav_menu_css_class', 'megaphone_modify_nav_menu_classes', 10, 2 );

if ( !function_exists( 'megaphone_modify_nav_menu_classes' ) ):
	function megaphone_modify_nav_menu_classes( $classes, $item ) {

		if ( !megaphone_get_option( 'mega_menu' ) ) {
			return $classes;
		}

		if ( $item->object == 'category' && isset( $item->megaphone_meta['mega_cat'] ) && $item->megaphone_meta['mega_cat'] ) {
			$classes[] = 'menu-item-has-children megaphone-mega-menu megaphone-category-menu';
		}

		if ( isset( $item->megaphone_meta['mega'] ) && $item->megaphone_meta['mega'] ) {
			$classes[] = 'megaphone-mega-menu';
		}

		return $classes;

	}
endif;


/**
 * Display category posts in mega menu
 *
 * @since  1.0
 */

if ( !function_exists( 'megaphone_get_nav_menu_category_posts' ) ) :

	function megaphone_get_nav_menu_category_posts( $cat_id ) {

		$args = array(
			'post_type'    => 'post',
			'cat'      => $cat_id,
			'posts_per_page' => absint( megaphone_get_option( 'mega_menu_ppp' ) )
		);

		$slider_class = $args['posts_per_page'] > 4 ? 'megaphone-slider has-arrows' : '';

		$output = '<li class="row '.esc_attr( $slider_class ).'">';

		ob_start();

		$args['ignore_sticky_posts'] = 1;

		$menu_posts = new WP_Query( $args );

		if ( $menu_posts->have_posts() ) :

			while ( $menu_posts->have_posts() ) : $menu_posts->the_post(); ?>

				<article <?php post_class( 'col-12 col-lg-3' ); ?>>

		            <?php if ( $fimg = megaphone_get_featured_image( 'megaphone-f-episode' ) ) : ?>

			                <div class="entry-media">
				                <a href="<?php echo esc_url( get_permalink() ); ?>" title="<?php echo esc_attr( get_the_title() ); ?>">
				                   	<?php echo megaphone_wp_kses( $fimg ); ?>
								</a>
								<?php if ( megaphone_is_show( $cat_id ) ) : ?>
									<?php megaphone_play_button( 'megaphone-button-play megaphone-button-play-white megaphone-button-play-medium megaphone-mega-menu-play', false ); ?>
								<?php endif; ?>
								
			                </div>

		            <?php endif; ?>

		            <div class="entry-header">

						<?php if ( megaphone_is_show( $cat_id ) ) : ?>
							
							<?php $episodes_ids = megaphone_get( 'episodes_ids' ); ?>
							<?php if ( $episode_number = megaphone_get_episode_number( $episodes_ids, get_the_ID(), true ) ) : ?>
								<div class="megaphone-show-header">
									<div class="entry-episode">
										<?php echo __megaphone( 'episode' ); ?>
										<?php echo absint( $episode_number ); ?>
									</div>
								</div>
							<?php endif; ?>
							
						<?php endif; ?>
				
						<?php $title = megaphone_is_show( $cat_id ) ? megaphone_get_episode_title() : get_the_title(); ?>
						<a href="<?php the_permalink(); ?>" class="entry-title h6"><?php echo wp_kses_post($title); ?></a>
		            </div>

				</article>

			<?php endwhile;

		endif;

		wp_reset_postdata();

		$output .= ob_get_clean();

		$output .= '</li>';

		return $output;

	}

endif;




/**
 * walker_nav_menu_start_el callback
 *
 * Used to display specific data in nav menu on website front-end
 *
 * @since  1.0
 */

add_filter( 'walker_nav_menu_start_el', 'megaphone_walker_nav_menu_start_el', 10, 4 );

function megaphone_walker_nav_menu_start_el( $item_output, $item, $depth, $args ) {

	if ( !megaphone_get_option( 'mega_menu' ) ) {
		return $item_output;
	}

	if ( isset( $item->megaphone_meta['mega_cat'] ) && $item->megaphone_meta['mega_cat'] ) {

		$item_output .= '<ul class="sub-menu megaphone-menu-posts">';
		$item_output .= megaphone_get_nav_menu_category_posts( $item->object_id );
		$item_output .= '</ul>';

	}

	return $item_output;
}