web-dev-qa-db-fra.com

Comment puis-je ajouter une variable PHP dans le menu Nav

Je veux ajouter une variable dans le menu, pour passer une valeur dans toute ma page. Le but est de récupérer une valeur pour le transport vers un autre site Web (à partir des liens de mon site) vers le suivi, cette valeur dépend de l'origine de l'utilisateur.

par exemple de mon menu:

- Home = mylink/?partenaire=<?php
echo $myPartenaire;
?>

- About us = mylink/aboutus.php?partenaire=<?php
echo $myPartenaire;
?>

- Contact = mylink/contact.php?partenaire=<?php
echo $myPartenaire;
?>

Je peux récupérer la valeur dans ma page mais pas dans le menu

  1. J'ai installé ce plugin pour mettre PHP dans ma page http://wordpress.org/extend/plugins/insert-php/

  2. Dans function.php avant "?>" au bas de la page, j'ai ajouté:

    $myPartenaire =  $_GET['partenaire'];
    
  3. Dans header.php Au début, j'ai ajouté:

    <?php global $myPartenaire ;  ?>
    
  4. Dans ma page, je peux récupérer la valeur, j'ai ajouté:

    [insert_php] global $myPartenaire ;  [/insert_php]
    
    <a href="http://mylink.com/mypage.php?partenaire=[insert_php]
    echo $myPartenaire;
    [/insert_php]">LINK OF MY PAGE</a>
    
    eg : mylink/contact?partenaire=<?php
    echo $myPartenaire;
    ?>
    

Je sais après comment obtenir la valeur de "partenaire" dans ma page, mais je ne sais pas comment ajouter de la valeur

partenaire=<?php
echo $myPartenaire;
?>

dans tout le lien dans mon menu de navigation.

1
Pomme Prod

Vous ne devriez jamais avoir besoin d'un plugin pour insérer du code brut PHP quelque part. Il y a toujours des effets secondaires que vous ne pouvez pas voir ou corriger facilement.

Filtrez plutôt wp_nav_menu_objects et ajoutez le paramètre ici aux URL.

if ( ! empty ( $_GET['partenaire'] ) )
    add_filter( 'wp_nav_menu_objects', 'wpse_82194_add_param' );

/**
 * Add a parameter to item URLs.
 *
 * @wp-hook wp_nav_menu_objects
 * @param   array $items
 * @return  array
 */
function wpse_82194_add_param( $items )
{
    $out = array ();

    foreach ( $items as $item )
    {
        $item->url = add_query_arg( 'partenaire', $_GET['partenaire'], $item->url );
        $out[] = $item;
    }

    return $items;
}
1
fuxia

Voir cette réponse sur la création d’un menu personnalisé Walker https://wordpress.stackexchange.com/a/14039/6477

Ensuite, au lieu d’ajouter une "description" conformément à la réponse, vous devriez pouvoir modifier le lien href.

0
helgatheviking