it-swarm.com.de

Verstecke den Menüpunkt in einem bestimmten Zustand

Ich benutze das Plugin qTranslate und muss einen Menüpunkt ausblenden, wenn die Sprache nicht Italienisch ist.

Online-Suche Ich habe diese Lösung erstellt und die Lösung in diesem Beitrag angewendet

Ich habe die Datei hide-menu.js erstellt und der Inhalt ist

 jQuery('a[href*="/it/noleggio-lungo-termine"]').each(function() {
   $("li#menu-item-9452").hide();
});

Dann habe ich unten in der function.php diesen Code hinzugefügt

   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
    );
   }

aber diese lösung funktioniert nicht.

Wie kann ich dieses Problem beheben?

1
Mma87

In Ihrem eigentlichen Code wird die Funktion zum Hinzufügen des Skripts niemals ausgeführt. Sie können die Funktion add_my_script() beliebig platzieren, müssen sie jedoch in ein Wordpress-Ereignis einbinden. Das beste Ereignis für diesen Fall sind die 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
    );
}

Ihr Javascript-Code ist auch falsch. Gemäß jQuery-Selektoren versuchen Sie, alle <a>-Elemente mit einem href-Attribut auszuwählen, die die Teilzeichenfolge /it/noleggio-lungo-termine enthalten, in der solche Elemente jedoch nicht vorhanden sind Ihr HTML, wenn die Sprache nicht italienisch ist. Der folgende Code funktioniert einfach, um das Element li mit id=menu-item-9452 auszublenden:

jQuery("li#menu-item-9452").hide();

Lesen Sie die Dokumentation zu jQuery-Selektoren und verwenden Sie einen gültigen Selektor.

Um dieses Element für bestimmte Sprachen auszublenden, müssen Sie Zugriff auf die aktuelle Sprache erhalten. Ich sehe, dass Sie qTranslate verwenden. Eine mögliche Lösung:

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 dann in hide-menu.js:

if( script_data.lang != 'it' ) {
    jQuery("li#menu-item-9452").hide();
}

Sie können dieses Element auch über CSS ausblenden. Zum Beispiel kannst du in der header.php deines Themas diesen Code zwischen <head> und </head> setzen:

<?php

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

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

  }

?>
2
cybmeta