根据导航菜单漫游将css添加到头部

时间:2013-04-30 作者:user28240

我的网站上有一个用于导航菜单的自定义walker,其中有一些我想应用于每个菜单的自定义CSS,但是,我不能简单地在那里回显它,因为即使它工作正常,根据W3 validator,它也是无效代码。解决方案是将css代码发送到Head部分,但我对如何发送感到困惑。

注意:css代码是动态的,并且会发生变化,因此将css硬编码到样式表中是行不通的。

我将所有css存储在一个数组中。

class Special_Walker extends Walker_Nav_Menu
{ 
    function start_el(&$output, $item, $depth, $args) {

        //menu generation code

        $css_code[] = //store css code in array 

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

        }
    }
}
如何提取$css\\u代码以将其回显到head部分?有没有一种方法可以使用wp\\U head function+action来完成?

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

呼叫wp_nav_menu() 之前wp_head() 调用,并存储结果以供以后使用:

<head>
<?php
$menu = wp_nav_menu( 
    array( 
        \'echo\'           => FALSE, 
        \'theme_location\' => \'primary\', 
        \'walker\'         => new Special_Walker 
    ) 
);
wp_head();
?>
</head>
<body>
<?php
echo $menu;
现在,您可以从自定义walker中将CSS排队。

在walker中,收集所有CSS规则,并将回调添加到wp_head 要将其打印出来:

class Special_Walker extends Walker_Nav_Menu
{
    protected $custom_css = array();

    function start_el(&$output, $item, $depth, $args) {

        add_action( \'wp_head\', array( $this, \'head_css\' ) );

        //menu generation code

        $this->custom_css[] = \'some css\';//store css code in array

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

    }

    public function head_css()
    {
        print \'<style>\' . join( "\\n", $this->custom_css ) . \'</style>\';
    }
}

结束

相关推荐

将CSS集成到WP函数调用中

下面是我用来显示帖子视图的代码。它与选项面板集成,允许用户选择是否显示它。我想集成div类。将视图直接发布到代码中。我之所以这样做,是因为它包含了一个蓝色背景,如果不显示视图,仍然会显示蓝色背景。<div class=\"postviews\"> <?php $options = get_option(\'to_post_views\'); if( $options == \'Yes\' ) { echo getPostViews( get_the_ID() );