7

I'm trying to add a URL GET parameter to one of my main menu items in Wordpress(but I don't know how to). So, my approach was to detect a click event on the menu item, then pass a parameter via ajax to my php page which will process value passed as needed. My main questions are, looking at my code, how come is not working? is there a better way of doing this in Wordpress and not rely on javascript?

Here is the javascript:
    <script type="text/javascript">
        $(document).ready(function() {
            $("#menu-item-128").click(function() {
                $.ajax({
                    url: 'homepage.php',
                    type: "GET",
                    data: ({ homeclick = true }),
                    success: function() {
                       alert("success!");
                    }
                });
             });
         });
   </script>

Here is my PHP:
   $homeclick = $_GET['homeclick'];   

   if ( !isset( $_COOKIE['hs_user'] ) ) {
       get_header();
   } elseif (isset( $_COOKIE['hs_user'] ) && $homeclick == true ) {
       get_header();
   } else {
       // Do Something else
       header('Location: homepage-returning-users');        
   }
4

4 に答える 4

10

フィルタ フックwp_get_nav_menu_itemsは、Nav メニューの操作に使用されます。このpost_title例で使用されている は、投稿/ページではなく、メニュー (ナビゲーション ラベル) のタイトルです。

ホームナビメニュー

functions.phpこのコードをファイルにドロップし、必要に応じてpost_titleとを調整?my_var=testします。独自のプラグインfunctionsを作成するよりも優れていることに注意してください。

add_filter( 'wp_get_nav_menu_items','nav_items', 11, 3 );

function nav_items( $items, $menu, $args ) 
{
    if( is_admin() )
        return $items;

    foreach( $items as $item ) 
    {
        if( 'Home' == $item->post_title)
            $item->url .= '?my_var=test';

    }
    return $items;
}
于 2013-09-11T14:41:51.090 に答える
0

問題は、変数を使用して Ajax 呼び出しでブール値を渡そうとしていることですhomeclick。データは URL を介して渡されるため、GET 要求は単純にテキストを使用します。そのため、論理/ブール型が必要な場合は、テキストで「true」と「false」を使用するか、おそらく 0 と 1 を使用できます。また、構文エラーもあります。下記参照。

次のことを試してください。

ajax 呼び出しで、次のように構文を修正し、homeclick を「true」に設定します data: ({ homeclick: 'true' }),

PHP で、変数の if 条件を$homeclick次 のように変更します$homeclick == 'true'

ブール値を利用したい場合は、POST メソッドの使用を検討してください。

于 2013-09-11T02:43:37.587 に答える