私はプラグインqTranslateを使用しています、そして、言語がイタリア語でないとき、私は1つのメニュー項目を隠さなければなりません。
オンラインで検索この解決策を作成 して 、この投稿に解決策を適用しました
Hide-menu.jsファイルを作成しました。内容は次のとおりです。
jQuery('a[href*="/it/noleggio-lungo-termine"]').each(function() {
$("li#menu-item-9452").hide();
});
それから私はfunction.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
);
}
しかし、この解決策はうまくいきません。
どうすればこの問題を解決できますか?
実際のコードでは、スクリプトを追加する機能は実行されません。関数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セレクタ によると、部分文字列<a>
を含むhref属性を持つすべての/it/noleggio-lungo-termine
要素を選択しようとしていますが、言語が指定されている場合、そのような要素はHTMLに存在しませんイタリア語ではありません。次のコードは単にid=menu-item-9452
でli
要素を隠すために機能します。
jQuery("li#menu-item-9452").hide();
jQueryセレクタのドキュメント を読んで、有効なセレクタを使用してください。
特定の言語でその要素を隠すには、現在の言語にアクセスする必要があります。あなたは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);
}
それからAntはhide-menu.jsで:
if( script_data.lang != 'it' ) {
jQuery("li#menu-item-9452").hide();
}
また、あなたはCSSによってその項目を隠すことができます。例えば、あなたのテーマのheader.phpでは、このコードを<head>
と</head>
の間に置くことができます。
<?php
if( qtrans_getLanguage() != 'it' ) {
echo "<style>#menu-item-9452 { display: none; } </style>";
}
?>