web-dev-qa-db-ja.com

変数を追加する方法 PHP メニューナビゲーション内

私のすべてのページに値を渡すために、Menuに変数を追加したいです。目的は、トラッキングへの(私のWebサイトのリンクから)別のWebサイトへの転送のための値を取得することです。この値はユーザーの出身地によって異なります。

私のメニューの例:

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

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

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

自分のページで値を取得できますが、メニューでは取得できません

  1. 私のページにPHPを入れるためにこのプラグインをインストールしました http://wordpress.org/extend/plugins/insert-php/

  2. ページ下部の "?>"の前のfunction.phpに、以下を追加します。

    $myPartenaire =  $_GET['partenaire'];
    
  3. In header.php最初に、私は追加しました:

    <?php global $myPartenaire ;  ?>
    
  4. 私のページでは値を取得できます。

    [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;
    ?>
    

私のページで "partenaire"の値を取得する方法はわかっていますが、値を追加する方法がわかりません

partenaire=<?php
echo $myPartenaire;
?>

ナビゲーションメニューのすべてのリンクに.

1
Pomme Prod

生のPHPコードをどこかに挿入するためのプラグインは必要ありません。あなたが容易に見ることができないか、修正することができない副作用が常にあります。

代わりにwp_nav_menu_objectsをフィルタリングし、ここに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

カスタムメニューの作成については、この回答を参照してください。Walker https://wordpress.stackexchange.com/a/14039/6477

それなら答えのように "description"を追加する代わりに、hrefリンクを修正することができるはずです。

0
helgatheviking