在特定条件下隐藏菜单项

时间:2014-06-09 作者:Mma87

我正在使用插件qTranslate,当语言不是意大利语时,我必须隐藏一个菜单项。

在线搜索我创建的this solution并将解决方案应用于this post

我创建了文件隐藏菜单。js,内容为

 jQuery(\'a[href*="/it/noleggio-lungo-termine"]\').each(function() {
   $("li#menu-item-9452").hide();
});
然后我在函数的底部添加了。php此代码

   function add_my_script() {
    wp_enqueue_script(
        \'hide-menu\', // name your script so that you can attach other scripts and de-register, etc.
        get_template_directory_uri() . \'/js/hide-menu.js\', // this is the location of your script file
        array(\'jquery\') // this array lists the scripts upon which your script depends
    );
   }
但这个解决方案不起作用。

如何解决此问题?

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

在实际代码中,从未执行添加脚本的函数。您可以将函数add_my_script() 无论你想去哪里,但你需要把它挂接到Wordpress事件中。这种情况下最好的活动是wp_enqueue_scripts:

add_action(\'wp_enqueue_scripts\', \'add_my_script\');
function add_my_script() {
    wp_enqueue_script(
        \'hide-menu\', // name your script so that you can attach other scripts and de-register, etc.
         get_template_directory_uri() . \'/js/hide-menu.js\', // this is the location of your script file
         array(\'jquery\') // this array lists the scripts upon which your script depends
    );
}
您的javascript代码也错误。根据jQuery selectors, 您正在尝试选择所有<a> 包含子字符串的具有href属性的元素/it/noleggio-lungo-termine, 但当语言不是意大利语时,HTML中就不存在这样的元素。下面的代码只是用来隐藏li 具有的元素id=menu-item-9452:

jQuery("li#menu-item-9452").hide();
阅读jQuery selectors documentation 并使用有效的选择器。

要为某些语言隐藏该元素,您必须访问当前语言。我看到您正在使用qTranslate。可能的解决方案:

add_action(\'wp_enqueue_scripts\', \'add_my_script\');
function add_my_script() {

    wp_enqueue_script(
        \'hide-menu\', // name your script so that you can attach other scripts and de-register, etc.
         get_template_directory_uri() . \'/js/hide-menu.js\', // this is the location of your script file
         array(\'jquery\') // this array lists the scripts upon which your script depends
    );

    $scriptData = array(
         \'lang\' => qtrans_getLanguage(),
    );
    wp_localize_script(\'hide-menu\',\'script_data\', $scriptData);
}
然后在隐藏菜单中。js公司:

if( script_data.lang != \'it\' ) {
    jQuery("li#menu-item-9452").hide();
}
您还可以通过CSS隐藏该项。例如,在标题中。你可以把这段代码放在<head></head>:

<?php

 if( qtrans_getLanguage() != \'it\' ) {

      echo "<style>#menu-item-9452 { display: none; } </style>";

  }

?>

结束