我正在尝试将一个URL GET参数添加到Wordpress中的一个主菜单项中(但我不知道如何)。所以,我的方法是检测菜单项上的click事件,然后通过ajax将参数传递给我的php页面,该页面将根据需要处理传递的值。我的主要问题是,看着我的代码,怎么回事?有没有更好的方法在Wordpress中执行此操作而不依赖于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');
}
答案 0 :(得分:8)
过滤器挂钩wp_get_nav_menu_items
用于操纵导航菜单。示例中使用的post_title
是菜单(导航标签)的标题,而不是帖子/页面的标题。
将此代码放入functions.php
文件中,根据需要调整post_title
和?my_var=test
。请注意,create your own plugin优于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;
}
答案 1 :(得分:0)
问题是您尝试使用变量homeclick
在Ajax调用中传递布尔值。 GET请求只是使用文本,因为数据是通过URL传递的,所以如果你想要一个逻辑/布尔类型,你可以在文本或者0和1中使用“true”和“false”。你也有语法错误,见下文。
尝试以下方法:
在你的ajax调用中,修复语法并将homeclick设置为“true”,如下所示:
data: ({ homeclick: 'true' }),
。
在你的php中,更改变量$homeclick
的if条件,如下所示:
$homeclick == 'true'
。
如果要使用布尔值,可能需要考虑使用POST方法。
答案 2 :(得分:0)
我建议在Appearance&gt;菜单中使用自定义菜单。它将帮助您保留带有get参数的自定义URL。您可以在此处阅读Wordpress Menu
答案 3 :(得分:0)
那是Brasofilo的一个叉子,对我来说非常合适: (将这段代码放在您的主题functions.php上)
// Transform title attributes to parameters
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 ($item->attr_title != "") $item->url .= '#' . $item->attr_title;
}
return $items;
}
我在这里要做的是获取菜单项的属性并将其转换为锚点名称。这样,我将具有以下类型的URL:www.domain.com/my-page#anchor1
在此之后,我只需要做一些jQuery魔术就可以跳(渐进向下滚动)到锚点。 (Codepen)。
如果看不到“标题属性”输入字段,请务必检查Wordpress Admin菜单顶部“屏幕选项”按钮上的选项...