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');
}
The filter hook
wp_get_nav_menu_items
is used to manipulate the Nav Menus. Thepost_title
used in the example is the title of the Menu (Navigation Label), not of the post/page.Drop this code in your
functions.php
file, adjust thepost_title
and?my_var=test
to your needs. Note that better thanfunctions
is to create your own plugin.I would suggest to use custom menus in Appearance>Menus. It will help you to retain custom URLs with get parameters. You may read it here Wordpress Menu
The problem is that you are attempting to pass a boolean value in your Ajax call with the variable
homeclick
. GET requests simply use text because the data is passed thru the URL, so if you are wanting a logical/boolean type you can use either "true" and "false" in text or perhaps 0 and 1. Also you have a syntax error, see below.Try the following:
In you ajax call, fix the syntax as well as set homeclick to "true" as follows:
data: ({ homeclick: 'true' }),
.And in your php, change the if condition for variable
$homeclick
as follows:$homeclick == 'true'
.You may want to consider using a POST method if you want to utilize a boolean.