【问题标题】:Add a title <li> before the first <li> of a dropdown with Wordpress Nav-walker class使用 Wordpress Nav-walker 类在下拉列表的第一个 <li> 之前添加标题 <li>
【发布时间】:2020-05-02 04:29:19
【问题描述】:

我正在尝试在引导下拉列表的第一个 &lt;li&gt;(或 &lt;div&gt;)之前添加一个新的 &lt;li&gt;,这将是下拉列表的标题。我知道 $output 应该有一个条件,但我应该只在下拉列表的第一个 &lt;li&gt; 之前输出什么?

到目前为止的代码(在start_el()函数内)-

if($depth == 1) {

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

        $item_output = $args->before;


        // The output to be filtered with condition
        $item_output .= '<div class="dropdown-item dropdown-title">DROPDOWN TITLE</div>';


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

}

输出在每个 &lt;li&gt; 之前得到回显。截图-

【问题讨论】:

    标签: wordpress wp-nav-walker


    【解决方案1】:

    如果这是在start_lvl 方法中,那么我认为没有任何论据可以帮助您。但是你可以添加一个静态变量并将其设置为false,如果你愿意,一旦第一个项目被处理了..

    可能不是最干净的解决方案,但如果您没有找到另一个简单的解决方案,那么它可能会为您解决问题。

    static $isDropdownTitleRendered = false; // Static variable so the value stays remembered during the request
    if ($depth == 1) {
            // First part of your code
            // ...
    
            // The output to be filtered with condition
            if (!$isDropdownTitleRendered) {
                    $item_output .= '<div class="dropdown-item dropdown-title">DROPDOWN TITLE</div>';
                    $isDropdownTitleRendered = true;
            }
    
            // ...
            // Rest of your code
    }
    

    【讨论】:

    • 所以你认为没有干净的或 WP 方式来解决这个问题?他们如何创建带有标题和所有内容的大型菜单?只是问问。
    • @RPMcMurphy 就个人而言,我自己不会使用 WP Nav-Walker 来制作复杂的菜单。我会自己渲染它。我经常将 Sage 与 Blade 模板结合使用,然后我简单地创建一个 Blade 部分来处理我的菜单。我相信还有很多其他方法可以实现同样的目标。
    • 有什么教程可以指导我实现吗?就 HTML 而言,它并不复杂,只是一个深度下拉列表,下拉列表顶部有一个 TTITLE。因此尝试使用自定义 nav-walker 来实现它。
    • 我的意思是您可以编写代码以自己想要的方式呈现菜单,也可以使用 WP Nav-Walker。如果您认为这样更简洁,您当然也可以用类变量替换静态变量。我也不确定是否有其他/更好的解决方案。祝你好运!
    • 好的。知道了。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2017-10-23
    • 2021-11-09
    • 1970-01-01
    • 2013-12-19
    • 2015-06-14
    相关资源
    最近更新 更多