如何在Wordpress上用php修改子页面链接


How to modify a child page link with php on Wordpress

大家好,

我的想法是,我已经为所有页面设置了自定义菜单(没有问题),这些选项正在通过:

$links = wp_kses(wp_nav_menu($parameters), $allowed_tags);(我只允许锚标记及其属性)

然后:

<nav class="menu-navigation">
 <?php
 echo $links;
 ?>
</nav>

到目前为止一切都很酷,但是菜单上的一些选项是某些页面的部分,比如:

<<p> 回家#接触/strong>

显然,在其他页面上,如博客页面,如果没有联系人部分,但我单击该选项,它应该重定向用户到Home#contact,否则不要重新加载页面,只是去到#contact部分。

所以我想用php检测哪些选项是子选项,并根据当前页面修改其href。我不太了解php,所以请给出一些想法和明确的步骤来完成这个任务?

提前感谢。

PD:如果可能的话,我想避免使用JS


更新:

遵循几个导航菜单的方法

这是我当前的header-nav代码:https://gist.github.com/duranmla/e70cc6073dfb2d79e19f,我按照建议进行导航。最后这里是我的仪表板https://www.evernote.com/shard/s243/sh/9896863b-c10b-4e32-bad9-5bbc4341cfd9/d373ab95d0c3c3f5d72f455c03dea7d4/deep/0/Fullscreen-8-15-14,-11-35-AM.png

首先,用wp_kses()包装wp_nav_menu()似乎没有必要。

要回答您的问题,一个不需要编写太多代码的简单方法是创建两个菜单——一个用于在有联系人部分的页面上显示,另一个用于在其他地方使用。

在您的主题包中,您需要确保有两个菜单位置注册。

register_nav_menus(
  array(
    'home_navigation' => __('Home Navigation'),
    'primary_navigation' => __('Primary Navigation')
  )
);

见http://codex.wordpress.org/Function_Reference/register_nav_menus

然后在WordPress管理的外观>菜单下创建您的菜单项。在第一个菜单中,将链接设置为"#contact",在第二个菜单中设置为"/#contact"。

然后在主题的header.php模板中,您需要指示要使用哪个导航菜单。如果你的主页是唯一需要替代菜单的页面,那么它会是这样的:

if(is_front_page()){
  wp_nav_menu(array('theme_location' => 'home_navigation'));
} else {
  wp_nav_menu(array('theme_location' => 'primary_navigation'));
}