LAW-1824 menu extra fields and REST endpoint

This commit is contained in:
Andrey Morgachev
2018-08-17 14:46:31 +03:00
parent 3b5be35fe8
commit 013e82d75d
7 changed files with 439 additions and 26 deletions

View File

@@ -1,4 +1,6 @@
<?php
require 'inc/menu-item-custom-fields.php';
/**
* Setup WordPress
*/
@@ -73,24 +75,20 @@ add_action('wp_enqueue_scripts', function () {
/**
* Filter Menu Item Class
*/
add_filter('nav_menu_item_args', function ($args, $item) {
$classes = get_post_meta($item->ID, '_menu_item_classes', true);
if (is_array($classes)) {
$classes = array_filter($classes);
if (count($classes) > 0) {
$args->link_before = '<i class="' . implode(' ', $classes) . '"></i> ';
}
}
return $args;
}, 10, 2);
add_filter('wp_setup_nav_menu_item', function ($menu_item)
{
$meta = LawCarta_Menu_Item_Custom_Fields::getMeta($menu_item);
$menu_item->meta = $meta;
add_filter('nav_menu_css_class', function ($classes, $item, $args) {
$classes = [];
if ($args->theme_location === 'bottom' && in_array('current-menu-item', $classes)) {
$classes[] = 'active';
$menu_item->meta['type'] = $menu_item->object;
if ($menu_item->object == 'page') {
$menu_item->meta['slug'] = get_post_field( 'post_name', $menu_item->object_id );
} else if ($menu_item->object == 'media_category') {
$menu_item->meta['slug'] = get_term_field( 'slug', $menu_item->object_id );
}
return $classes;
}, 10, 3);
return $menu_item;
});
/**
* Setup Admin Portal