| Server IP : 178.63.100.251 / Your IP : 216.73.216.228 Web Server : LiteSpeed System : Linux dobby.thevpsserver.com 4.18.0-553.16.1.lve.el8.x86_64 #1 SMP Tue Aug 13 17:45:03 UTC 2024 x86_64 User : truewayi ( 1855) PHP Version : 7.4.33 Disable Function : show_source,system,shell_exec,passthru,exec,popen,proc_open MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/truewayi/public_html/wp-content/themes/omexo/inc/ |
Upload File : |
<?php
/**
* Register the Megamenu Custom Post Type
*/
function register_omexo_megamenu_post_type()
{
$labels = array(
'name' => 'Mega Menu',
'singular_name' => 'Mega Menu',
'menu_name' => 'Mega Menus',
'name_admin_bar' => 'Mega Menu',
'add_new' => 'Add New',
'add_new_item' => 'Add New Mega Menu',
'new_item' => 'New Mega Menu',
'edit_item' => 'Edit Mega Menu',
'view_item' => 'View Mega Menu',
'all_items' => 'All Mega Menus',
'search_items' => 'Search Mega Menus',
'parent_item_colon' => 'Parent Mega Menus:',
'not_found' => 'No Mega Menus found.',
'not_found_in_trash' => 'No Mega Menus found in Trash.',
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_icon' => 'dashicons-menu-alt3',
'query_var' => true,
'rewrite' => array('slug' => 'omexo_megamenu'),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title', 'editor', 'thumbnail'),
);
register_post_type('omexo_megamenu', $args);
}
add_action('init', 'register_omexo_megamenu_post_type');
/*
* Add a Custom Meta Box to Menu Items
*/
function omexo_megamenu_menu_meta_box()
{
add_meta_box(
'omexo_megamenu_meta_box',
'Mega Menu Posts',
'omexo_megamenu_meta_box_callback',
'nav-menus',
'side',
'high'
);
}
add_action('admin_head-nav-menus.php', 'omexo_megamenu_menu_meta_box');
function omexo_megamenu_meta_box_callback()
{
$mega_menu_posts = get_posts(array(
'post_type' => 'omexo_megamenu',
'posts_per_page' => -1
));
if (!empty($mega_menu_posts)) {
echo '<ul>';
foreach ($mega_menu_posts as $post) {
$post_title = esc_html($post->post_title);
$post_id = esc_attr($post->ID);
echo "<li><label><input type='checkbox' class='menu-item-checkbox' value='{$post_id}'> {$post_title}</label></li>";
}
echo '</ul>';
echo '<button class="button-secondary submit-add-to-menu right">Add to Menu</button>';
echo '<br class="clear">';
} else {
echo 'No Mega Menu posts found.';
}
}
/**
* Save the Selected Custom Post Type to the Menu Item
*/
function omexo_megamenu_custom_menu_item($menu_id, $menu_item_db_id, $args)
{
if (isset($_REQUEST['menu-item-omexo_megamenu'])) {
$omexo_megamenu_id = $_REQUEST['menu-item-omexo_megamenu'][$menu_item_db_id];
update_post_meta($menu_item_db_id, '_menu_item_omexo_megamenu', $omexo_megamenu_id);
}
}
add_action('wp_update_nav_menu_item', 'omexo_megamenu_custom_menu_item', 10, 3);
function omexo_megamenu_custom_menu_item_meta($item_id, $item, $depth, $args)
{
$omexo_megamenu_id = get_post_meta($item_id, '_menu_item_omexo_megamenu', true);
?>
<p class="field-omexo_megamenu description description-wide">
<label for="edit-menu-item-omexo_megamenu-<?php echo $item_id; ?>">
Selext Mega Menu<br />
<select id="edit-menu-item-omexo_megamenu-<?php echo $item_id; ?>" class="widefat code edit-menu-item-omexo_megamenu" name="menu-item-omexo_megamenu[<?php echo $item_id; ?>]">
<option value=""><?php _e('Select a Mega Menu'); ?></option>
<?php
$mega_menu_posts = get_posts(array(
'post_type' => 'omexo_megamenu',
'posts_per_page' => -1
));
foreach ($mega_menu_posts as $post) {
$selected = selected($omexo_megamenu_id, $post->ID, false);
echo "<option value='{$post->ID}' {$selected}>{$post->post_title}</option>";
}
?>
</select>
</label>
</p>
<?php
}
add_action('wp_nav_menu_item_custom_fields', 'omexo_megamenu_custom_menu_item_meta', 10, 4);
function omexo_megamenu_save_custom_menu_item_meta($menu_id, $menu_item_db_id, $args)
{
if (isset($_REQUEST['menu-item-omexo_megamenu'][$menu_item_db_id])) {
$omexo_megamenu_id = $_REQUEST['menu-item-omexo_megamenu'][$menu_item_db_id];
update_post_meta($menu_item_db_id, '_menu_item_omexo_megamenu', $omexo_megamenu_id);
} else {
delete_post_meta($menu_item_db_id, '_menu_item_omexo_megamenu');
}
}
add_action('wp_update_nav_menu_item', 'omexo_megamenu_save_custom_menu_item_meta', 10, 3);
/**
* Add class 'menu-item-has-children' to menu items with mega menu assigned
*/
function omexo_megamenu_add_class_to_menu_items($items, $args)
{
foreach ($items as $item) {
$omexo_megamenu_id = get_post_meta($item->ID, '_menu_item_omexo_megamenu', true);
if (!empty($omexo_megamenu_id)) {
if (!in_array('menu-item-has-children', $item->classes)) {
$item->classes[] = 'menu-item-has-children omexo-mega-menu';
}
}
}
return $items;
}
add_filter('wp_nav_menu_objects', 'omexo_megamenu_add_class_to_menu_items', 10, 2);
/**
* Display the Custom Post Type as a Submenu
*/
function omexo_megamenu_display_submenu($item_output, $item, $depth, $args)
{
$omexo_megamenu_id = get_post_meta($item->ID, '_menu_item_omexo_megamenu', true);
if (!empty($omexo_megamenu_id)) {
$omexo_megamenu = get_post($omexo_megamenu_id);
if ($omexo_megamenu) {
$item_output .= '<ul class="sub-menu omexo-mega-menu-wrap">';
// Apply Elementor content filter if Elementor is active
if (did_action('elementor/loaded')) {
$content = \Elementor\Plugin::instance()->frontend->get_builder_content_for_display($omexo_megamenu_id);
} else {
$content = apply_filters('the_content', $omexo_megamenu->post_content);
}
$item_output .= '<div class="omexo-mega-menu-content">' . $content . '</div>';
$item_output .= '</ul>';
}
}
return $item_output;
}
add_filter('walker_nav_menu_start_el', 'omexo_megamenu_display_submenu', 10, 4);
?>