• Resolved Chris Hickman

    (@antiochinteractive)


    I absolute love this plugin. I’m using it on a website wherein there are 4 similar restaurants, each with their own menus. The plugin has a few shortcomings on making this manageable — and I found solutions. However, I’d love if these solutions could be future features, not just my hacks.

    IDENTIFYING WHICH SECTION BELONGS TO WHICH MENU.
    If we have the same sections in multiple menus, this is confusing to administrate. We have the ‘Note’ field wherein we can write the Menu Name. I’ve used the plug ‘Admin Columns’ to make this display when browsing menu sections. I installed it, selected Menu Sections, added ‘Note’ as a ‘Custom Field’ and selected ‘_fl_menu_section_note’. Done.

    Request: Add the ability to show column ‘NOTE’ in Menu Sections admin.
    Request: Create a way to arbitrarily link a section to a menu. The ‘Types’ Plugin has this sort of functionality. Show this relationship in parenthesis after the name whenever the name appears in the admin.

    IDENTIFYING WHICH RESTAURANT THE FOOD BELONGS TO
    Once again, multiple restaurants may serve… french fries. We can use Menu Tags to identify which restaurant an item belongs in and this shows up nicely in the admin. However, when adding items to a section, we cannot tell which ‘French Fries’ we are adding — they might all have different prices.

    So I’ve hacked the plugin to show the respective TAG in parenthesis when results appear in the AJAX populated ‘Menu Items’ box.

    My edits are below:

    /lib/Foodlist/Project/Wordpress/Plugin/Foodlist/Admin/Metabox/MenuSection/ItemsMetabox.php
    :100 +
    $terms = wp_get_post_terms( $postId, ‘fl-menu-tag’, array(“fields” => “names”));
    $terms = implode(‘, ‘, $terms);
    $title = get_the_title($postId) . ‘ (‘ . $terms . ‘)’;

    /lib/Foodlist/Project/Wordpress/Plugin/Foodlist/Admin/Ajax/Manager/Base.php
    :105 +
    if ($type == ‘fl-menu-item’) {
    $terms = wp_get_post_terms( $post->ID, ‘fl-menu-tag’, array(“fields” => “names”));
    $terms = implode(‘, ‘, $terms);
    $note = $terms;
    }
    else {
    $note = get_post_meta($post->ID, ‘_fl_menu_section_note’, true);
    }
    $result[] = array(
    ‘id’ => $post->ID,
    ‘text’ => get_the_title($post),
    ‘note’ => $note
    );

    https://www.ads-software.com/plugins/foodlist/

Viewing 2 replies - 1 through 2 (of 2 total)
  • Plugin Author Denis V (Artprima)

    (@v-media)

    Thank you for your proposal and kind words. I will revise it in a couple of days. Will keep you posted.

    Plugin Author Denis V (Artprima)

    (@v-media)

    With the new version of Foodlist you will be do the following (put this code in your functions.php):

    add_filter('foodlist_admin_ajax_metabox_menu_post_note', function($note, $postId, $postType) {
        if ($postType == 'fl-menu-item') {
            $terms = wp_get_post_terms($postId, 'fl-menu-tag', array("fields" => "names"));
            $terms = implode(', ', $terms);
            $note = $terms;
        } else {
            $note = get_post_meta($postId, '_fl_menu_section_note', true);
        }
        return $note;
    }, 10, 3);
    
    add_filter('foodlist_admin_metabox_menu_item_template', function($template) {
        return '
                <li class="widget-top fl-menu-sortable-item">
                        <div class="widget-title"><h4>%s %s</h4></div>
                        <div class="fl-menu-sortable-item-remove dashicons dashicons-no"></div>
                        <input type="hidden" name="fl_menu_section[items][]" value="%s" />
                </li>
        ';
    });
    
    add_filter('foodlist_admin_metabox_menu_item_html', function($html, $postId, $title, $template) {
        $terms = wp_get_post_terms($postId, 'fl-menu-tag', array("fields" => "names"));
        $terms = implode(', ', $terms);
        $note = $terms;
    
        if ($note) {
            $note = '<span class="in-widget-title">('.esc_html($note).')</span>';
        }
        $html = sprintf($template, esc_html($title), $note, (int)$postId);
    
        return $html;
    }, 10, 4);
    
    add_filter('foodlist_admin_metabox_menu_item_jstemplate', function($jsTemplate, $template) {
        return sprintf($template, '__title__', '__note__', '__id__');
    }, 10, 2);
Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Managing Multiple Menus with Same Menu Item Names’ is closed to new replies.