Extend Menu Walker Output

时间:2015-09-03 作者:Python O.o

我在互联网上找到了一个自定义菜单漫游器,它非常适合我的多级菜单。它几乎像手套一样合身。我做了一些微小的改进,但现在我需要限制输出中的字符数:

<li><a href="http:\\\\..."><span>Blah Blah Blah Blah Blah Blah Blah Blah Blah</span></a></li>
我在理解它的实际工作方式时遇到了一些问题,因此我可以通过PHP或CSS来限制它。这些方法似乎都不管用(当然都是我的错……)。

你能帮帮我吗?以下是extend Walker的代码:

class CSS_Menu_Walker extends Walker {

var $db_fields = array(\'parent\' => \'menu_item_parent\', \'id\' => \'db_id\');

function start_lvl(&$output, $depth = 0, $args = array()) {
    $indent = str_repeat("\\t", $depth);
    $output .= "\\n$indent<ul>\\n";
}

function end_lvl(&$output, $depth = 0, $args = array()) {
    $indent = str_repeat("\\t", $depth);
    $output .= "$indent</ul>\\n";
}

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

    global $wp_query;
    $indent = ($depth) ? str_repeat("\\t", $depth) : \'\';
    $class_names = $value = \'\';
    $classes = empty($item->classes) ? array() : (array) $item->classes;

    /* Add active class */
    if (in_array(\'current-menu-item\', $classes)) {
        $classes[] = \'active\';
        unset($classes[\'current-menu-item\']);
    }

    /* Check for children */
    $children = get_posts(array(\'post_type\' => \'nav_menu_item\', \'nopaging\' => true, \'numberposts\' => 1, \'meta_key\' => \'_menu_item_menu_item_parent\', \'meta_value\' => $item->ID));
    if (!empty($children)) {
        $classes[] = \'has-sub\';
    }

    $class_names = join(\' \', apply_filters(\'nav_menu_css_class\', array_filter($classes), $item, $args));
    $class_names = $class_names ? \' class="\' . esc_attr($class_names) . \'"\' : \'\';

    $id = apply_filters(\'nav_menu_item_id\', \'menu-item-\'. $item->ID, $item, $args);
    $id = $id ? \' id="\' . esc_attr($id) . \'"\' : \'\';

    $output .= $indent . $indent .  \'<li\'. $value . \'>\';

    $attributes  = ! empty($item->attr_title) ? \' title="\'  . esc_attr($item->attr_title) .\'"\' : \'\';
    $attributes .= ! empty($item->target)     ? \' target="\' . esc_attr($item->target    ) .\'"\' : \'\';
    $attributes .= ! empty($item->xfn)        ? \' rel="\'    . esc_attr($item->xfn       ) .\'"\' : \'\';
    $attributes .= ! empty($item->url)        ? \' href="\'   . esc_attr($item->url       ) .\'"\' : \'\';

    $item_output = $args->before;
    $item_output .= \'<a\'. $attributes .\'><span>\';
    $item_output .= $args->link_before . apply_filters(\'the_title\', $item->title, $item->ID) . $args->link_after;
    $item_output .= \'</span></a>\';
    $item_output .= $args->after;

    $output .= apply_filters(\'walker_nav_menu_start_el\', $item_output, $item, $depth, $args);
}
谢谢你!!!

1 个回复
最合适的回答,由SO网友:Ari 整理而成

更改此行:

$item_output .= $args->link_before . apply_filters(\'the_title\', $item->title, $item->ID) . $args->link_after;
收件人:

$item_output .= $args->link_before . apply_filters(\'the_title\', substr($item->title, 0, 10), $item->ID) . $args->link_after;
这将字符限制为10。请注意这一点substr($item->title, 0, 10).

相关推荐

为什么我的主题的css在另一个网站上不起作用

我在Neve theme的基础上开发我的on theme。首先,我对脚本有问题,因为它不起作用,但我不得不从页脚更改它们的位置。php到标题。php的一切都很好。新的一些脚本无法工作,因为css根本没有加载。我尝试了5种不同的方法,但都失败了。标题中的。php我只是给他们<style> </style></我在函数中使用了寄存器样式。php,标题。php和页脚。php function my_theme_enqueue_styles() { &#x